7

いくつかのフィールドを持つフォームを作成していますが、そのうちの 1 つには、リソースが作成されている場合は表示されないデフォルト値が必要です。ただし、編集中の場合は、フィールドを表示する必要があります。だから私はこのようなことを試みます:

<%= 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 規則に従っている場合は、タスク コントローラーのnewまたはメソッドを介してこのフォームを表示します。edit

新規の場合は新しい (空の) タスクが作成され、編集の場合は既存のタスクがデータベースから取得されます。

id簡単なテストは、タスクにまだあるかどうかを確認することです。

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

ユーザーがそこにたどり着くために取った行動よりも、操作しているオブジェクトの状態を見たほうがよいでしょう。

于 2012-12-06T19:56:12.363 に答える