3

オブジェクトにアドレスが必要な場合に「新規」および「編集」フォームに使用する、比較的単純なアドレス パーシャルがあります。それはうまくいきます。問題は、同じフィールドを「表示」ビューに表示したいということです。唯一の問題は、住所のパーシャルが「表示」ビューに存在しないフォームを必要とすることです。私はそれを複製しますが、新しい/編集用に1つ、ショー用に別の部分を持つのはあまりDRYではないようです。

誰かがこの問題を解決したかどうか疑問に思っていました。.new? の使用を考えました。そして.persisted? しかし、それはあまり役に立ちません。なぜなら、編集用のオブジェクトは、表示オブジェクトと同じ方法でそれらの両方を渡すからです。

どんな助けでも大歓迎です。

EDIT : これは、新規および編集用の部分的な私のアドレスです。完全に新しいパーシャルを再作成することはあまり DRY とは思えないため、new、edit、および show ビューと同じパーシャルを使用したいと思います。私が見る問題は、このパーシャルにはフォーム :f が必要であり、もちろん「表示」ビューでは使用できないことです。

<p>
  <%= f.label :address_line_1, 'Address 1' %><br />
  <%= f.text_field :address_line_1 %>
</p>

<p>
  <%= f.label :address_line_2, 'Address 2' %><br />
  <%= f.text_field :address_line_2 %>
</p>

<p>
  <%= f.label :city %><br />
  <%= f.text_field :city %>
</p>
<p class="address_state">
  <%= f.label :state , "State" %><br />
  <%= f.select :state, us_states, :include_blank => true  %>
</p>

<p>
<%= f.label :zip_code, 'Zip Code' %><br />
  <%= f.text_field :zip_code %>
</p>
4

3 に答える 3

2

次のreadonlyような属性をフィールドに含めます。

<%= f.text_field :name, readonly: @readonly %>

次に、メソッドに配置@readonly = trueしますshow

于 2013-10-05T10:54:00.897 に答える
1
 <%= fields_for @object do |f| %>
   <%= render 'your/fields_parial', :f => f %>
 <% end %>
于 2013-01-11T08:32:22.350 に答える