【发布时间】:2014-12-18 19:22:00
【问题描述】:
我通过表单将哈希作为参数从一个视图传递到另一个视图。我在第一个视图中验证了哈希的内容,我可以看到它是根据第二个视图中的 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]"]}
控制器(options_controller.rb):
def sort
@hash = Hash.new
@hash = params[:event_hash]
end
查看#2 (sort.html.erb):
HASH = <%= @hash %>
当我提交表单时,url 看起来像这样:
".../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]
无济于事。
【问题讨论】:
-
我从哪里得到什么?作为@hash 的值?目前,通过上面列出的任何一种方法,@hash 要么从未设置,要么设置为 nil
-
params有什么? -
天哪,你真是个天才。为什么我不考虑查看参数 -.- 看起来我的 routes.rb 中有多余的变量,这导致 type_hash 被分配给与我最初发送的不同的参数。查看参数,我能够检索 type_hash 的值并在视图中使用它。谢谢!
标签: ruby-on-rails ruby hash parameters