Ruby on rails 与两个控制器的会话
我有两个控制器:工人和任务Ruby on rails 与两个控制器的会话,ruby-on-rails,model-view-controller,Ruby On Rails,Model View Controller,我有两个控制器:工人和任务 视图/工作者/索引包含: <% @workers.group_by(&:name).each do |name, workers| %> <tr> <td><%= name %></td> <td><%= workers.size %></td> </tr> <% end %> 这是视图/任务/索引: <% @
视图/工作者/索引
包含:
<% @workers.group_by(&:name).each do |name, workers| %>
<tr>
<td><%= name %></td>
<td><%= workers.size %></td>
</tr>
<% end %>
这是视图/任务/索引:
<% @task.each do |task| %>
<tr>
<td><%= task.name %></td>
<td><%= task.task %></td>
<td><%= task.done %></td>
</tr>
<% end %>
我想我没有正确定义routes.rb,因为我的错误是:
Routing Error
No route matches {:action=>"show", :controller=>"tasks", :worker_id=>"alon"}
Try running rake routes for more information on available routes.
首先,您可以通过删除不必要的match
指令来简化路由。宣布:
resources :workers do
resources :tasks
end
您将任务资源嵌套到工人资源中。然后,您的任务索引将可通过以下方式访问:
workers/:id/tasks
其中,id
是工人模型的主键
Rails路径助手对单数/复数形式敏感。link_to
调用中的路径对应于包含任务列表(复数)的特定工作进程(单数)。Rails路由器需要主键或模型实例作为id参数:
<%= link_to 'All tasks', worker_tasks_path(worker) %>
or
<%= link_to 'All tasks', worker_tasks_path(worker.id) %>
或
谢谢!它几乎起作用了。我的问题是(例如)如果我单独按下worker的“ShowTasks”,我将被定向到:并且此页面为空,不显示我的任务索引页面..Rails默认行为是使用(数字)主键构建到资源的路径。如果您希望有一个友好的URL而不是<代码>工人/ 1 /任务>代码>,您可以考虑使用FalfLySID ID GEM:。
resources :workers do
resources :tasks
end
workers/:id/tasks
<%= link_to 'All tasks', worker_tasks_path(worker) %>
or
<%= link_to 'All tasks', worker_tasks_path(worker.id) %>