Rails动态link_to的

Dus*_*mes 2 controller ruby-on-rails link-to

我有一个视图,其中包含以下ruby代码,我想在我的应用程序中创建动态链接:

<% @customer.jobs.each do |job| %>
  <%= link_to job.id, job %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

这会为job_path抛出一个未定义的方法错误,这是有道理的,因为我的jobs_controller show方法是空的:

def show
end
Run Code Online (Sandbox Code Playgroud)

这是我的路线:

resources :customers do
  resources :jobs
end
Run Code Online (Sandbox Code Playgroud)

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

基本上,我从数据库中提取项目,然后尝试使用数据库项创建指向相应视图的链接.

有任何想法吗?

Man*_*eep 5

你有

<%= link_to job.id, job %>
Run Code Online (Sandbox Code Playgroud)

第二个选项指定您的URL或路径助手.您收到此错误,因为您的路由没有job_path帮助程序

要检查所有URL或路径助手,请在终端中搜索路由.它会给你看起来像的输出

Prefix       Verb   URI Pattern                                     Controller#Action

customer_job GET    /customers/:customer_id/jobs/:id(.:format)      jobs#show
Run Code Online (Sandbox Code Playgroud)

所以用你的链接替换

<%= link_to job.id, customer_job_path(@customer,job) %> 
Run Code Online (Sandbox Code Playgroud)

更新:

参考你的评论:

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

  • customer_job_path(@customer,job) (2认同)
  • @TiagoFarias它实际上是工作:) (2认同)