这应该很容易,我是个傻瓜。
我有一个使用分部显示窗体的模型的新视图和编辑视图。对于编辑窗体,我想显示一个我不想在新窗体中显示的字段。
我应该将一个局部变量传递给分部,说明它处于编辑模式,并使用分部中的条件来显示字段吗?
在这种情况下,最好的做法是让部分人知道什么叫它?
这将只显示new
表单的字段
<%# app/views/something/_form.html.erb %>
<% form_for something do |form| %>
<%# common fields ... %>
<% if something.new_record? %>
<%= form.text_field :foo %>
<% end %>
<% end %>
如果您想在edit
窗体上使用它,只需将if
切换到unless
如果使用form_for
,则可以对new
和edit
使用相同的模板。
form_for
将检查对象是否持久化。如果是新记录,则操作url将指向#update
,如果是持久化的,则将指向#create
。
所以,是的,当使用相同的"新建"one_answers"编辑"模板时,您的评论会起作用。当obj.new_record?
时,它是一个编辑表单。
如果可能的话,尽量避免在您的视图中使用条件语句(并不总是可能的)
_form.html.erb
# common fields only
# ...
_new.html.erb
<%= form_for @your_model do |f| %>
<fieldset>
<% # render _form partial %>
</fieldset>
<div>
<%= f.submit "Create New XXXX" %>
</div>
<% end %>
_edit.html.erb
<%= form_for @your_model do |f| %>
<fieldset>
<% # render _form partial %>
<% # render fields that only appear for edit %>
</fieldset>
<div>
<%= f.submit "Save Changes" %>
<%= link_to 'Cancel', xxxx_path %>
</div>
<% end %>