首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails动态链接

Rails动态链接
EN

Stack Overflow用户
提问于 2014-08-06 20:51:37
回答 3查看 2.5K关注 0票数 2

我有一个视图,它有下面的ruby代码,我想使用它在我的应用程序中创建一个动态链接:

代码语言:javascript
复制
<% @customer.jobs.each do |job| %>
  <%= link_to job.id, job %>
<% end %>

这会为job_path引发一个未定义的方法错误,这是有意义的,因为我的jobs_controller显示方法是空的:

代码语言:javascript
复制
def show
end

以下是我的路线:

代码语言:javascript
复制
resources :customers do
  resources :jobs
end

我的问题是-如何在控制器中设置方法,使我的link_to在视图页面上工作?

本质上,我从DB中提取一个项,然后尝试使用DB项创建一个指向相应视图的链接。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-06 21:04:53

你有

代码语言:javascript
复制
<%= link_to job.id, job %>

这里,第二个选项指定您的url或路径助手。您得到了此错误,因为您的路由没有job_path助手

要检查所有url或路径助手,请在您的航站楼中进行耙路。它将为您提供如下所示的输出

代码语言:javascript
复制
Prefix       Verb   URI Pattern                                     Controller#Action

customer_job GET    /customers/:customer_id/jobs/:id(.:format)      jobs#show

因此,将链接替换为

代码语言:javascript
复制
<%= link_to job.id, customer_job_path(@customer,job) %> 

更新:

关于你的评论:

@customer是您的客户模型的实例变量,您可以在控制器操作中定义它(因为您在视图中使用它)。控制器操作中定义的实例变量可自动用于其视图。有关详细信息,请阅读docs

票数 5
EN

Stack Overflow用户

发布于 2014-08-06 21:12:16

您可以使用浅层资源。

代码语言:javascript
复制
resources :customers, shallow: true do
  resources :jobs
end

然后使用job_path url助手:

代码语言:javascript
复制
<%= link_to job.id job_path(job) %>
票数 2
EN

Stack Overflow用户

发布于 2014-08-06 21:08:01

耙路

你可能会发现这条路实际上有点像customer_job_path

要处理这个问题,您需要将link_to更改为

代码语言:javascript
复制
  <%= link_to job.id, customer_job_path(@customer, job) %>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25169961

复制
相关文章

相似问题

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