2011-02-01 10 views
8

मेरे पास form_for है, मैं अपने व्यू हेल्पर में बना रहा हूं जो एक उपयोगकर्ता को किसी अन्य उपयोगकर्ता को समूह से प्रचारित करने जा रहा है।रेल: 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"} 

उत्पन्न एचटीएमएल लगता है:

<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 वस्तु केवल स्ट्रिंग है कि पिछले f.submit टैग द्वारा उत्पन्न होता है देख रहा है की कोशिश कर सकते हैं, जबकि form_for और f.submit के बीच सब कुछ खो दिया है।

इस मामले में, 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

आप

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

धन्यवाद, मैं यह देख रहा था! –

संबंधित मुद्दे