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]