如何覆盖rails new / edit表单上的标题

时间:2014-05-21 15:18:18

标签: ruby-on-rails ruby ruby-on-rails-3

使用Rails 3,Ruby 1.9,带有bootstrap和jQuery。

在我的_form.html.erb中我有:

<%= form_for(@system_cat, :html => {:class => "form form-horizontal system-cat"}) do |f| %>

application.html.erb有:

<html>
<head>
  <title>System Catalog</title>
  .
  .
  .
</head>
<body>
  <%= yield %>
</body>
</html>

,页面最终以:

.
.
.
<body>
  <h1>New system_cat</h1>
.
.
.

一切正常,我只想更换新的system_cat&#39;标题,对于使用相同_form.html.erb文件的编辑页面相同 - 它最终以&#39; Edit system_cat&#39;结束。

2 个答案:

答案 0 :(得分:3)

尝试:

  <h1><%= @system_cat.new_record? ? 'New' : 'Edit' %> system_cat</h1>

答案 1 :(得分:2)

这部分是评论讨论

的后续内容

正如我在评论中所写,您引用的标题实际上(或者至少应该是)在新的和编辑的特定操作视图文件中(所以new.html.erbedit.html.erb)。如果您查看这些文件,他们实际上会调用您的_form.html.erb部分文件。例如,这就是我的new.html.erb之一:

<h2>Add Device</h2>
<%= render :partial => 'form' %>

edit.html.erb看起来像:

<h2>Edit Device</h2>
<%= render :partial => 'form' %>

同样的事情;不同的头衔。

BroiSatse的答案很好,并且会起作用,但我担心的是你的部分内容会放置太多特定于行动的逻辑。正如BroiSatse指出的那样,有时候有必要做些类似的事情,但是如果你能避免它,它通常会使代码更加清晰。因此,另一种方法是简单地编辑这些动作视图文件中的标题。

正如我在评论中所写,_form.html.erb没有(或不应该)关心是从编辑还是新动作调用它。它是新的和编辑文件,它们称之为部分文件,应该负责设置一般的,特定于行动的,如标题之类的东西。