0
我有兩個控制器:工人和任務。與兩個控制器的會話
views/workers/index
包含:
<% @workers.group_by(&:name).each do |name, workers| %>
<tr>
<td><%= name %></td>
<td><%= workers.size %></td>
</tr>
<% end %>
它顯示了我所有的工人和他們的任務數。
我想補充一個又一個< TD>名爲:「顯示所有任務」,並表示工人X的所有任務
爲了做到這一點,我想,我需要這樣的東西:
<td><%= link_to 'show all tasks', worker_task_path(name) %></td>
因此,我有tasks_controller
:
def index
@task = Worker.where(:name => params[:id]) respond_to do |format|
format.html # show.html.erb
format.json { render json: @worker }
end
end
這是views/tasks/index
:
<% @task.each do |task| %>
<tr>
<td><%= task.name %></td>
<td><%= task.task %></td>
<td><%= task.done %></td>
</tr>
<% end %>
另外,我定義routes.rb
:
TODO::Application.routes.draw do
#resources :workers
#root to:"workers#index"
match '/workers/:id/index', :to => 'tasks#index', :as => 'index_task'
resources :workers do
resources :tasks
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.
謝謝!它幾乎可以工作。我的問題是(例如),如果我按下Alon工作人員的「顯示任務」,我將被引導至:http:// localhost:3000/workers/alon/tasks 並且此頁面爲空白顯示我的任務索引頁面。 –
Rails的默認行爲是使用(數字)主鍵構建資源路徑。如果你想擁有一個友好的URL而不是'workers/1/tasks',你可以考慮使用friendly_id gem:https://github.com/norman/friendly_id。 – Jef