【问题标题】:Application.html.erb in rails 4Rails 4 中的 Application.html.erb
【发布时间】:2015-06-10 13:20:46
【问题描述】:

我是 rails 4.0.2 的新手。 我正在使用 rails 版本 4 和 ruby​​ 2 开发应用程序。在视图中 application.html.erb 文件不起作用。它不会在所有视图文件上进行复制。

这是我在 application.html.erb 文件中的代码:

<!DOCTYPE html>
<html>
<head>
  <title>Myapp</title>
  <%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
  <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
  <%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
</body>
</html>

我有一个名为 xyz_controller.rb 的控制器,其代码如下:

class xyzController << ApplicationController



end

application_controller.erb 文件的代码如下:

class ApplicationController < ApplicationController

       def login

       end
end

login.erb 文件包含正常的 html 代码。

提前致谢。

【问题讨论】:

  • 文件在app/views/layouts 中吗?您的控制器中是否定义和指定了任何其他布局?
  • 是的,该文件存在于 app/views/layouts 中,而控制器中没有任何其他布局。
  • 请用控制器更新您的帖子并查看代码,并解释您如何知道布局没有被使用。
  • 我有一个名为 xyz_controller.rb 的控制器,其代码如下:'class xyz
  • 第一行应该是class XyzController &lt; ApplicationController。然后您对该控制器的视图将位于app/views/xyz

标签: html ruby-on-rails-4


【解决方案1】:

您的应用程序控制器应如下所示:

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
end

您的 XYZ 控制器应如下所示:

class XyzController < ApplicationController
  def action
    #here you define instance variables used in your view for this action
  end
  ...
end

...例如,您的 login 操作将在此处定义。

您的视图应命名为 action.html.erb,其中的操作与您的控制器操作匹配,并且该文件应位于 app/views/xyz 中。

Rails 的口头禅是约定优于配置。这意味着,如果您(非常密切地)遵循 Rails 命名约定等,一切都会变得容易得多。如果您还没有,我强烈建议您通过像 Hartl's 这样的好教程来学习。

希望这会有所帮助。

【讨论】:

  • 请用您的实际代码更新您的原始帖子。您现在在那里显示的内容与我的答案不符。
  • 我已经更新了我的代码,我尝试了你的建议,但我的代码不起作用
  • @Priya - 如果您需要我们的帮助,您需要发布代码。还要详细解释正在发生的事情或您正在看到的内容以及您期望看到的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
  • 2015-06-22
  • 1970-01-01
  • 2016-06-17
  • 2012-03-22
  • 1970-01-01
  • 2015-11-10
相关资源
最近更新 更多