2

我正在使用 Rails 版本 2.3.8 Hash => agent_list = [[5, "val"], [4, "val"], [3, "val"], [1, "val"]]

<%= link_to_remote "Click Here", 
        :url => {
        :controller => "controller", 
        :action => "method",
        :id => @p_id,
        :hash_list => hash_list
        },
        :method => 'post' %>

生成的链接是:

[http://localhost/controller/method/12?hash_list%5B%5D%5B%5D=5&hash_list%5B%5D%5B%5D=val&hash_list%5B%5D%5B%5D=4&hash_list%5B%5D%5B %5D=val&hash_list%5B%5D%5B%5D=3&hash_list%5B%5D%5B%5D=val&hash_list%5B%5D%5B%5D=1&hash_list%5B%5D%5B%5D=val]

谁能告诉我得到类似东西的正确方法是:http://localhost/controller/method/12?hash_list=[hash_list]

这样我就可以在我的控制器方法中将它用作 params[:agent_list] 。

PS对不起,如果它是一个nooby问题。

4

2 回答 2

1

在您的操作中创建一条路线routes.rb,如果尚未创建,则:

<%= link_to "Click here", my_route_path(@obj, :hash => { :foo => "bar" }), :remote => true, :method => :post %>

未经测试,但应该做的伎俩。如果您提供remote: true,那么您的 URL 看起来并不重要,哈希应该驻留params[:hash]在您的控制器中。

link_to_remote在 Rails 3+ 中已弃用。

导轨 2.3.8:

<%= link_to_remote "Click here", :url => my_route_path(@obj, :hash => { :foo => "bar" }), :method => :post %>
于 2012-12-17T17:18:33.780 回答
0

我的<%= link_to @item_link_name, show_item_path(item: {id: @item.id}) %>

生成http://localhost:3000/items/show_item?item%5Bid%5D=XXX,

控制器识别为params[:item][:id]

于 2017-11-14T21:34:23.380 回答