【问题标题】:Passing Non-ID Variable Through Rails Routes通过 Rails 路由传递非 ID 变量
【发布时间】:2014-06-10 20:16:02
【问题描述】:

Rails 2.3、Ruby 1.8.7

我正在尝试通过 rails 路由传递一个变量。我还没有找到任何人使用不是模型 id 的东西来做这件事的案例。我不确定这是否是问题的根源。

在视图中:

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)

在此致谢

【问题讨论】:

  • 控制器方法不是方法。它们是行动。他们没有收到任何论据。 reference_string 应该是您的操作代码中的 params[:reference_string]。

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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2016-04-09
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    相关资源
    最近更新 更多