【问题标题】:Retrieving a param that is a hash检索作为哈希的参数
【发布时间】: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


【解决方案1】:

问题是我的路线有多余的变量没有被使用,这导致我的参数在分配时被偏移。

查看参数的值表明@type_hash 被分配给param[:type] 而不是param[:event_hash]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 2018-09-15
    • 2017-06-10
    • 1970-01-01
    相关资源
    最近更新 更多