我在我的视图帮助器中创建了一个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="✓" />
<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("Are you sure you want to promote kquiring@gmail.com to an officer?")" type="submit" value="Promote" />
</form>任何帮助都将不胜感激,
谢谢!
发布于 2011-02-01 17:04:31
之所以会出现这个问题,是因为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。
发布于 2011-02-01 16:48:06
你能试一下吗?
f.hidden_field :group_creator, {:value => ''}https://stackoverflow.com/questions/4860111
复制相似问题