2011-02-01 16 views
8

私はform_forを持っています。私は自分のビューヘルパーで、あるユーザがグループから別のユーザを昇格させるようにしています。Rails:form_forの非表示フィールドがコントローラにパラメータを送信していません

def promote_button_for(group, user) 
    membership = group.get_membership(user) 
    form_for membership, :url => group_membership_path(group, membership) do |f| 
     f.hidden_field :group_creator 
     hidden_field_tag 'test', '1' 
     f.submit("Promote", :onclick => "return confirm(\"Are you sure you want to promote #{user.email} to an officer?\")") 
    end 
    end 

ボタンを使用してフォームを送信すると、コントローラに送信される隠しフィールドのパラメータが表示されません。

Started POST "/groups/1/memberships/6" for 127.0.0.1 at 2011-02-01 01:45:32 -0600 
    Processing by MembershipsController#update as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"VQl/rVX8OVOETv2HE7KtopUc3B19ShoMkUhjJwNlaZs=", "commit"=>"Promote", "group_id"=>"1", "id"=>"6"} 

生成されたHTMLは次のようになります。

<form accept-charset="UTF-8" action="/groups/1/memberships/6" class="edit_membership" id="edit_membership_6" method="post"> 
    <div style="margin:0;padding:0;display:inline"> 
     <input name="utf8" type="hidden" value="&#x2713;" /> 
     <input name="_method" type="hidden" value="put" /> 
     <input name="authenticity_token" type="hidden" value="VQl/rVX8OVOETv2HE7KtopUc3B19ShoMkUhjJwNlaZs=" /> 
    </div> 
    <input id="membership_submit" name="commit" onclick="return confirm(&quot;Are you sure you want to promote [email protected] to an officer?&quot;)" type="submit" value="Promote" /> 
</form> 

すべてのヘルプは大、

おかげでいただければ幸いです!

答えて

4

を試すことができます。

この場合、form_forタグは、基本的にpromote_button_forメソッドから返される文字列であるため、ビューを直接操作しません。

def promote_button_for(group, user) 
    membership = group.get_membership(user) 
    form_for membership, :url => group_membership_path(group, membership) do |f| 
    f.hidden_field(:group_creator) << \ 
    hidden_field_tag('test', '1') << \ 
    f.submit("Promote", :onclick => "return confirm(\"Are you sure you want to promote #{user.email} to an officer?\")") 
    end 
end 

一緒に生成されたすべての文字列を連結し、form_forに戻しお知らせ<< \、:

答えは、あなたはこのように、一緒にチェーンに生成されたタグが必要だということです。

+0

ブリリアント、ありがとう!私はフォームヘルパーの内部でform_forに関する多くの情報を見つけることができませんでした。これは完璧な感謝の意を表します。 – Andrej

11

あなたはform_forオブジェクトのみform_forf.submit間の他のすべてが失われている間、最後f.submitタグによって生成された文字列を見ているので、あなたがこの問題を持っている

f.hidden_field :group_creator, {:value => ''} 
+1

ありがとう、私はこれを探していた! –

関連する問題