2012-12-06 11 views
6

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

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

をしかし、それは動作しません: はまた、私はこのように、コントローラの設定を変更しようとしました。

私はこの状態でどのような比較を行うべきですか教えてください。おかげさまで

答えて

7

通常のRailsの規則に従っている場合、このフォームはタスクコントローラのnewまたはeditの方法で表示されます。

新規の場合は、新しい(空の)タスクが作成されます。編集のために、既存のタスクがデータベースからフェッチされます。

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

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

あなたはあなたのユーザーがそこに着くために取った措置ではなく、操作するオブジェクトの状態を見ている方がいいでしょう。

+1

シンプルでありながらも天才的な解決策です。どうもありがとうございました。私は自分自身を推測していたはずです - –

関連する問題