目前,我使用以下代码将params [:id]传递给line_items create
<%= button_to 'Add to Cart', { controller: 'line_items', action: 'create', id: brick }, class: 'green radius nice button', method: :post, remote: true %>
但是,它会在url查询中附加id参数,我不认为button_to要做。我想要的是通过隐藏表单字段传递id param。我可以在button_to中执行此操作或解决此问题的任何解决方法吗?
答案 0 :(得分:7)
从Rails 4.1.0开始,button_to现在有了其他选项:params ,它们可以接收将转换为隐藏字段的哈希值。例如:
button_to 'Send Invitation', invitation_path(user), params: {'user[email]' => user.email}
会给:
<form action="/users/invitation" class="button_to" method="post">
<div>
<input type="submit" value="Resend">
<input name="user[email]" type="hidden" value="user@yahoo.com">
</div>
</form>
答案 1 :(得分: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,其中包含项ID:
<%= 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文件添加到你的控制器视图文件夹,但那是另一回事。