动态身份证

dem*_*mas 7 ruby ruby-on-rails

如何在Rails中设置body标签的ID?

<body id="login">
Run Code Online (Sandbox Code Playgroud)

Dam*_*che 25

我没有发现任何特别优雅或灵活的解决方案.body_classapplication_helper.rb添加方法:

  def body_class
    [controller_name, action_name].join('-')
  end
Run Code Online (Sandbox Code Playgroud)

..布局:

<body class="<%= body_class %>">
#e.g output: <body class="articles-show">
Run Code Online (Sandbox Code Playgroud)

然后,您可以优化上面的帮助程序以动态注入其他标识符,例如模块.

  • 很好,可重复使用 (4认同)

fl0*_*00r 5

你应该在这里使用content_for标签.

在您的应用布局中:

<html>
...
<%= yield :body || "<body>" %>
...
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后从任何视图你可以这样称呼:

<% content_for :body do %>
  <body id='login'>
<% end %>
Run Code Online (Sandbox Code Playgroud)

而已 :)


Mat*_*ani 3

您可以在控制器内或视图中的操作中设置变量@body_id,并且可以在布局中使用它。

例如,如果您有一个操作索引,您可以在控制器中添加以下代码:

def index
  @body_id = "myid"
end
Run Code Online (Sandbox Code Playgroud)

或者在您的视图中index.html.erb为:

<% @body_id = "myid" %>
Run Code Online (Sandbox Code Playgroud)

然后在您的布局中,我想您可以添加 application.html.erb:

<body<%= " id=#{@body_id}" if @body_id %>>    # no quotes around #{} are needed ;)
Run Code Online (Sandbox Code Playgroud)

  • 这有点老套和粗暴:) (5认同)