首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能将params传递到link_to控制器上?

为什么我不能将params传递到link_to控制器上?
EN

Stack Overflow用户
提问于 2015-04-06 17:25:37
回答 2查看 338关注 0票数 1

我的haml视图中有以下link_to方法:

代码语言:javascript
复制
= link_to(t('compare.view_as_graph'), compare_graph_projects_url, remote: true)

当我点击这个链接时,我想要我的url的params,它的扩展名是:

代码语言:javascript
复制
p/compare?project_0=MySQL&project_1=fast-math

传递到我用下面代码创建的compare_controller中。

代码语言:javascript
复制
def projects_graph
  respond_to do |format|
    format.js
  end
end

当前,当我检查代码时,代码会给出这个params哈希:

代码语言:javascript
复制
{"controller"=>"compare", "action"=>"projects_graph", "query"=>nil}

这不是我需要的。我需要project_0和project_1的部分。这是我从routes.rb出发的路线

代码语言:javascript
复制
 get 'p/graph', to: 'compare#projects_graph', as: :compare_graph_projects

我试过很多像这样的东西

代码语言:javascript
复制
compare_graph_projects_url(params)
compare_graph_projects_url(opts[:graph])
= link_to(t('compare.view_as_graph'), compare_graph_projects_url, data: {params: params}, remote: true)

(选项:图是包含参数的haml中的一个变量)

我在这里做错什么了?为什么我不能用AJAX请求获取参数呢?

我唯一能想到的另一件事是做request.referer来获取实际的头信息,但这看起来并不是很草率。我会感谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-06 17:32:22

您只需要在url帮助程序中传递如下的值:

代码语言:javascript
复制
= link_to(t('compare.view_as_graph'), compare_graph_projects_url(project_0: "Your value", project_1: "your value"), remote: true)

然后您可以在控制器中访问它们,如下所示:

代码语言:javascript
复制
def projects_graph
  @proj_0 = params[:project_0]
  @proj_1 = params[:project_1]
end

您还应该阅读有关action controllers的更多细节,了解事情是如何工作的。

票数 2
EN

Stack Overflow用户

发布于 2015-04-06 17:33:47

您应该将参数传递给路由助手,如下所示:

代码语言:javascript
复制
compare_graph_projects_url(project_0: opts[:graph][project_0], project_1: opts[:graph][project_0])

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29476185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档