通过Rails路由传递非ID变量

时间:2014-06-10 20:16:02

标签: ruby-on-rails routing ruby-on-rails-2 ruby-1.8.7

Rails 2.3,Ruby 1.8.7

我试图通过rails路由传递变量。我还没有能够找到一个案例,任何人都可以用一些不是模特身份的东西来做这件事。我不确定这是否是问题的根源。

在视图中:

reference_string = "string of random letters and numbers"
something_path(reference_string)

routes.rb

map.something 'something/:reference_string', :controller => :my_controller, :action => "my_action", :reference_string => "reference_string"

my_controller

def my_action(reference_string)
  ...
end

我最终得到了一个参数错误:

wrong number of arguments (0 for 1)

先谢谢

1 个答案:

答案 0 :(得分:1)

控制器操作不接受参数。

更新您的控制器操作,使其如下所示:

def my_action
  ...
end

然后,要访问reference_string,请在控制器或视图中的任意位置尝试params[:reference_string]。例如,您可以这样做:

def my_action
  redirect_to root_url, :notice => "You sent us the reference string #{params[:reference_string]}!"
end