7

我正在制作一个包含多个字段的表单,其中一个应该具有默认值,如果正在创建资源,则该值不可见。但是,如果正在编辑该字段,则应显示该字段。所以我尝试这样的事情:

<%= 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] }

但它不起作用。

请告诉我,在这种情况下我应该使用什么比较?谢谢。

4

1 回答 1

8

如果您遵循正常的 Rails 约定,您将通过任务控制器中的newor方法显示此表单。edit

对于新的,创建一个新的(空)任务,对于编辑,从数据库中获取一个现有的。

然后一个简单的测试是看任务是否id还有。

<% if @task.id %>
  ...
<% end %>

您最好查看您正在操作的对象的状态,而不是查看用户为到达那里所采取的操作。

于 2012-12-06T19:56:12.363 回答