Ruby on Rails - Передача хеша в качестве параметра с помощью link_to_remote Rails 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: // локальный / контроллер / метод / 12 hash_list% 5B% 5D% 5B% 5D = 5 & hash_list% 5B% 5D% 5B% 5D = значение & hash_list% 5B% 5D% 5B% 5D = 4 & hash_list% 5B% 5D% 5B? % 5D = значение & hash_list% 5B% 5D% 5B% 5D = 3 & hash_list% 5B% 5D% 5B% 5D = значение & hash_list% 5B% 5D% 5B% 5D = 1 & hash_list% 5B% 5D% 5B% 5D = значение]

Может кто-нибудь сказать мне, как правильно получить что-то вроде: http://localhost/controller/method/12? Hash_list = [hash_list]

так что я могу использовать его как params [: agent_list] в моем методе контроллера.

PS извините, если это нубийский вопрос.

2 ответа

Создайте маршрут в своем 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 %>

Мой <%= 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]

Другие вопросы по тегам