0

これらのローカル パラメータを部分的なフォームに渡そうとしていますが、hidden_​​fields に渡されています。値は変更されるため、フォームに直接入力することはできません。どんな助けでも大歓迎です。

私は持っている:

    <% form_for :user, @user, :url => { :action => "create", :controller => "users"} do |f| %>
      <%= f.error_messages %>
      <%= render :partial => "form", :locals => { :f => f, :position => 'Company Commander', :battalion_id => @battalion.id, :company_id => c.id} %>
      <%= f.submit "Register" %>
    <% end %>

_form.html

<%= f.hidden_field (:position, :value => :position) %>
<%= f.hidden_field (:battalion_id, :value => @battalion.id) %>
<%= f.hidden_field (:battalion_id, :value => @company.id) %>

<%= f.hidden_field (:roles, :value => "Company") %>

<%= f.label (:name, "Name:") %>
<%= f.text_field :name%>
<br />
<%= f.label (:login, "Login:") %>
<%= f.text_field :login %>
<br />
<%= f.label (:email, "E-Mail:") %>
<%= f.text_field :email%>
4

3 に答える 3

5

ここで2つのアイデアを混ぜています。

初め、

インスタンス変数 (名前が「@」で始まる変数) は、すべてのビューとパーシャルで使用できます。動作しますが、悪い習慣と見なされます。特に、複数のアクションから呼び出すことができるパーシャルを扱う場合。

いずれにしても、コードが機能しない理由はありません。locals 引数に company_id と battalion_id がなかったとしても。

2番、

:locals 引数の仕組みを誤解しているようです。:locals に与えられたハッシュで render が呼び出されると、Rails は与えられたハッシュの各キーと値のペアに対してローカル変数を定義します。各ローカル変数には、名前、ハッシュ キー、およびハッシュ値の値が含まれます。

コードを例として使用するには:

<%= render :partial => "form", :locals => { :f => f, :position => 'Company Commander', :battalion_id => @battalion.id, :company_id => c.id} %>

これにより、次のローカル変数にアクセスできるパーシャルがレンダリングfされます。positionbattalion_idcompany_id

PS battalion_id には 2 つの隠しフィールドがあります。最初のものだけが使用されます。2 番目は company_id のようです。

于 2010-02-10T18:04:32.520 に答える
2

:localsパーシャルに引数を使用する@場合、変数を参照するときにを省略できます。

<%= f.hidden_field :battalion_id, :value => battalion_id %>
于 2010-02-10T09:30:04.600 に答える
1

あなたのパーシャルで、試してみてください…</p>

<%= f.hidden_field (:position, :value => position) %>
<%= f.hidden_field (:battalion_id, :value => battalion_id) %>
<%= f.hidden_field (:battalion_id, :value => company_id) %>
于 2010-02-10T17:57:17.960 に答える