【问题标题】:How to pass a parameter to controller action from view in rails through link_to helper如何通过link_to helper从rails中的视图将参数传递给控制器​​操作
【发布时间】:2014-10-23 06:10:10
【问题描述】:
<%= link_to "Connect", {controller:"home", action:"connectTo"}, id: "btny" %>

这是我的link_to 助手。

我想在这个link_to 标记中附加一个参数,以便我可以在connectTo 操作中获取它。我找不到正确的语法或方法,也无法理解我在 stackoverflow 上找到的一些答案。 我怎样才能做到这一点?

def connectTo 
  #here i want to get the parameter i pass from link_to from view...
end

【问题讨论】:

  • 你试过&lt;%= link_to "Connect", {controller:"home", action:"connectTo", my_param: 'foo'}, id: "btny" %&gt;,然后params[:my_param]
  • 它也不起作用。我尝试了您的代码并将 params[:my_param] 保存在 @myVar 中并将其显示在 connectTo 视图中,但没有输出。
  • 点击链接后得到了什么url?
  • 出了点问题。您应该在网址末尾有一个额外的?my_param=foo

标签: ruby-on-rails ruby-on-rails-3.1


【解决方案1】:
  1. 不要在 Rails 中的变量名和方法名中使用驼峰式大小写。这不是惯例,以后会咬你的。

  2. 尽可能使用命名路径,而不是手动分配控制器和操作。

对于你的问题,假设你的命名路径是home_connect_to_path,那么

link_to "Connect", home_connect_to_path(foo_param: 'bar_value')

链接看起来像

http://localhost:3000/home/connect_to?foo_parms=bar_value

然后在控制器中获取它

def connect_to
  foo = params[:foo_param] # 'bar_value'

【讨论】:

  • 如何为我的控制器和视图创建命名路径?
  • 一旦你在routes.rb中定义了这样的路径,你可以在命令行中运行rake routes来查看所有路径的名称。
  • 你能告诉我如何在 routes.rb 中定义一个路径吗?
  • 有没有办法在不使用命名路径的情况下做到这一点?
  • 也许有,我以前没用过。但是,如果路径没有名称,则它必须在 routes.rb 中未定义。如果不在 routes.rb 中,则无法访问。所以你不能跳过 routes.rb。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多