我有一个视图,它有下面的ruby代码,我想使用它在我的应用程序中创建一个动态链接:
<% @customer.jobs.each do |job| %>
<%= link_to job.id, job %>
<% end %>这会为job_path引发一个未定义的方法错误,这是有意义的,因为我的jobs_controller显示方法是空的:
def show
end以下是我的路线:
resources :customers do
resources :jobs
end我的问题是-如何在控制器中设置方法,使我的link_to在视图页面上工作?
本质上,我从DB中提取一个项,然后尝试使用DB项创建一个指向相应视图的链接。
有什么想法吗?
发布于 2014-08-06 21:04:53
你有
<%= link_to job.id, job %>这里,第二个选项指定您的url或路径助手。您得到了此错误,因为您的路由没有job_path助手。
要检查所有url或路径助手,请在您的航站楼中进行耙路。它将为您提供如下所示的输出
Prefix Verb URI Pattern Controller#Action
customer_job GET /customers/:customer_id/jobs/:id(.:format) jobs#show因此,将链接替换为
<%= link_to job.id, customer_job_path(@customer,job) %> 更新:
关于你的评论:
@customer是您的客户模型的实例变量,您可以在控制器操作中定义它(因为您在视图中使用它)。控制器操作中定义的实例变量可自动用于其视图。有关详细信息,请阅读docs
发布于 2014-08-06 21:12:16
您可以使用浅层资源。
resources :customers, shallow: true do
resources :jobs
end然后使用job_path url助手:
<%= link_to job.id job_path(job) %>发布于 2014-08-06 21:08:01
跑
耙路
你可能会发现这条路实际上有点像customer_job_path
要处理这个问题,您需要将link_to更改为
<%= link_to job.id, customer_job_path(@customer, job) %>https://stackoverflow.com/questions/25169961
复制相似问题