0

編集ビューと新しいビューの部分を実装したいと考えています。

だから、私は今、そのようなコードで部分的です:

_subject_fields.html.erb

<div class="control-group">
  <%= f.label :subject_name, "Name of subject", :class => "control-label" %>
  
  <div class="controls">
    <%= f.text_field :subject_name,
                     :placeholder => field_placeholder,
                     :value => subject_name %>
  </div>
</div>

私はそのようなコードでパーシャルを呼び出します:

<%= render :partial => 'subject_fields', 
         :locals => { :f => f,
                      :field_placeholder => @everpresent_field_placeholder,
                      :subject_name => @some_var,
                     }
 %> 

しかし、ここに問題があります。編集ビューでそのようなパーシャルをレンダリングするとき、レールが自動的にそれを行うため、パスするべきではありsubject_nameません(つまり、新しいビューでもこのパーシャルを使用したいので、独自の :value を設定しない限り、レールがこれを行います) . しかし、私は新しいビューに合格subject_nameする必要があります。どうすればそれを解決できますか? 条件を部分的に追加する必要がありますか?

4

2 に答える 2

2

価値のある部分はまったく必要ありません。と言うときはf.text_field :subject_name、フォームでtext_fieldを呼び出していますf。fはオブジェクト(の@blog_postなどform_for @blog_post do |f|)に作用しています。Railsは@blog_postのtext_fieldメソッドを呼び出そうとし、戻り値がある場合はそれをtext_fieldに入力します。

したがって、subject_name text_fieldの値は、存在する場合は設定され(:editのように)、存在しない場合は空白のままになります(:newのように)。

于 2012-04-22T13:45:34.777 に答える
0

これを試して:

<%= render :partial => 'subject_fields', 
         :locals => { :f => f,
                      :field_placeholder => @everpresent_field_placeholder,
                     }.merge params[:action]=='new' ? { :subject_name => @some_var } : {}
 %> 
于 2012-04-22T13:44:45.917 に答える