我正在创建一个包含多个字段的表单,其中一个字段应该具有默认值,如果正在创建资源,则该字段不可见。但如果正在编辑,则应显示该字段。所以我尝试这样的事情:
<%= form_for(@task) do |f| %>
<div class="field" id="v_field">
<%= f.label :v_field, "Always visible field." %>
<%= f.text_field :status %>
</div>
<% if params[:action] != "new" %>
<div class="field" id="default_field">
<%= f.label :default_field, "Default field (should be invisible for new resources only)." %>
<%= f.text_field :status %>
</div>
<% end
<% end %>
但它不起作用。 此外,我试图改变这样的控制器设置:
format.html { :except => [:default_field] }
但它不起作用。
请告诉我,在条件下我应该使用什么比较? 感谢。
答案 0 :(得分:8)
如果您遵循正常的Rails约定,则可以通过任务控制器中的new
或edit
方法显示此表单。
对于new,创建一个新的(空)任务,用于编辑从数据库中提取的现有任务。
然后,一个简单的测试就是查看任务是否还有id
。
<% if @task.id %>
...
<% end %>
你最好看看你操纵对象的状态,而不是用户到达那里的动作。