通过命名路由传递get参数,然后传递给控制器​​模型; stringify_keys!

时间:2010-06-17 04:55:49

标签: ruby-on-rails

嘿,我刚刚在铁轨上学习红宝石,我现在已经被困了一段时间了。

这是我的网址请求:

  http://192.168.2.20:8080/Location/new/123.123,-123.123/

这是我的routes.rb:

  map.connect '/Location/new/:coords/', :controller => 'Location', :action => 'new', :coords => /\d+.\d+,-\d+.\d+/
  map.connect '/Location/list/', :controller => 'Location', :action => 'list'
  map.connect '/Location/create/', :controller => 'Location', :action => 'create'

这是我的location_controller.rb

  def new
    @coords = Location.new(params[:coords])
  end

这是它给我的错误信息:

  NoMethodError in LocationController#new
  undefined method `stringify_keys!' for "123.123,-123.123":String

1 个答案:

答案 0 :(得分:1)

Location.new期望Hash作为其参数,在location_controller.rb中你应该使用:

def new
  @location = Location.new( { :coords => params[:coords] } )
end

假设coords是您要使用的字段的名称。然后,在您的视图或后续代码中,您可以使用@location.coords来获取值。