2012-02-08 191 views
3

目前,我使用下面的代码传递PARAMS [:编号],以line_items创建用rails button_to helper生成隐藏的表单域数据?

<%= button_to 'Add to Cart', { controller: 'line_items', action: 'create', id: brick }, class: 'green radius nice button', method: :post, remote: true %> 

然而,将追加在URL查询ID PARAM这是我没有想button_to做。我想要的是通过隐藏表单字段传递ID参数。我可以在button_to中做到这一点,或解决此问题的任何解决方法?

回答

0

我已经做了我的项目的模块中类似的东西:

首先,我增加了一个形式的隐藏字段:

<%= form_tag({:action => 'my_action'}, :id=>"item_form", :method => :post, :remote=>true) do%> 
    <%= hidden_field_tag :item_id, 0%> 
<% end %> 

列表上的所有MI项目将有一个check_box_tag至极包含项目编号:

<%= check_box_tag "item_ids", item.id, false,:id => item.id, :class => "my_fancy_class"%> 

当一个项目被挑选正好赶上的情况下,对hidden_​​field替代的价值和触发形式:

function(event, ui) { 
     $("#item_id").attr('value',ui.selected.id); 
     $('form#item_form').submit(); 
     } 

如果你想渲染的东西只是添加一个action.js.erb文件到你的控制器视图文件夹,但多数民众赞成在另一件事。

5

从Rails 4.1.0开始,button_to现在有附加选项:params它可以接收将被转换为隐藏字段的散列。例如:

button_to 'Send Invitation', invitation_path(user), params: {'user[email]' => user.email} 

会给:

<form action="https://stackoverflow.com/users/invitation" class="button_to" method="post"> 
    <div> 
     <input type="submit" value="Resend"> 
     <input name="user[email]" type="hidden" value="[email protected]"> 
    </div> 
</form>