我通过表单将哈希作为参数从视图传递到另一个视图。我在第一个视图中验证了哈希的内容,我可以看到它是基于第二个视图中的URL发送的,但是,我似乎无法从控制器访问它。
我的代码看起来像这样:
查看#1(sortday.html.erb):
<% @type_hash = Hash.new
@type_hash["arr"] = @type_array %>
<%= form_tag({:controller => 'options', :action => 'sort', :event_hash => @type_hash, :page => 1}, :method => 'get') do %>
<%= select_date Date.today, :prefix => 'day', order: [:month, :day, :year] %>
<%= submit_tag("Submit") %>
<% end %>
类型哈希设置为:
{"arr"=>["[321, 82]", "[88, 84]", "[960, 45]"]}
Controller(options_controller.rb):
def sort
@hash = Hash.new
@hash = params[:event_hash]
end
查看#2(sort.html.erb):
HASH = <%= @hash %>
当我提交表单时,网址看起来像这样:
".../events/sort/**arr%5B%5D=%5B321%2C+82%5D&arr%5B%5D=%5B88%2C+84%5D&arr%5B%5D=%5B960%2C+45%5D**/1?utf8=✓&day%5Bmonth%5D=7...commit=Submit"
如您所见,哈希使其成为URL。如何在控制器/视图中检索它?
我也尝试过这样的事情:
@hash = params[:event_hash][:arr]
和
@hash = params[:arr]
无济于事。
答案 0 :(得分:0)
问题是我的路线有多余的未使用的变量导致我的参数在分配时被抵消。
查看参数值显示@type_hash
被分配到param[:type]
而不是param[:event_hash]
。