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在视图页面上工作?
基本上,我从数据库中提取项目,然后尝试使用数据库项创建指向相应视图的链接.
有任何想法吗?
你有
<%= 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模型的实例变量,您可以在控制器操作中定义该变量(因为您在视图中使用它).控制器操作中定义的实例变量可自动用于其视图.有关详细信息,请阅读文档