0

私には2つのコントローラーがあります:タスク、タスクパーソン。

私はviews/tasks / index.html.erbを持っています:

<table>
    <% @tasks.group_by(&:name).each do |name, tasks| %>
    <tr>
      <td><%= name %></td>
      <td><%= tasks.size %></td>
      <td><%= tasks.select{ |task| task.done != true }.size %></td>
    </tr>
    <% end %>
</table>

views / tasks/index.htmlにviews/tasksperson / index.html.erbへのリンクを作成したい。また、名前をTasksperson_controllerの「index」に送信したい。params[:名前]しかし、私はそれが間違っていると思います

多分、私は次のようなことをする必要があります:

<td><%= link_to 'Show Tasks', tasksperson_path(name) %></td>

これは私のtasksperson_controllerです:

class TaskspersonController < ApplicationController
    def index
       @tasks = Task.where(:name => params[:name]) respond_to do |format|
          format.html # index.html.erb
          format.json { render json: @tasks }
       end
    end
end

およびviews/tasksperson / index.html.erb:

<table>
  <tr>
    <th>Name</th>
    <th>num of tasks</th>
    <th>num tasks left</th>
    <th>test</th>
  </tr>

  <% @tasks.each do |f| %>
  <tr>
    <td><%= f.name %></td>
    <td><%= f.task %></td>
    <td><%= f.done %></td>
  </tr>
  <% end %>
</table>
4

2 に答える 2

1

あなたのコメントに基づいて「...タスクには多くのタスクパーソンがいます」以下のようなデータモデルが必要だと思います

class Task < ActiveRecord::Base
  has_many :assigned_tasks
  has_many :people, :through => :assigned_tasks
end

# maybe this is just the User class?
class Person < ActiveRecord::Base 
  has_many :assigned_tasks
  has_many :tasks, :through => :assigned_tasks
end

# was TaskPerson
class AssignedTask < ActiveRecord::Base
  belongs_to :task
  belongs_to :person
end

「has_many:through Association」については、http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association参照してください。

task = Task.create(:title => "Go up the hill")
jack = Person.find(00000)
jill = Person.find(00000)

task.people << jack
task.people << jill

task.assigned_tasks.each do |join|
  puts join.created_at
  puts join.person.name
  # 0 - jack
  # 1 - jill
end

task.people.each do |person|
  puts person.name
end

ビューに何を表示しようとしているのか正確にはわかりません。タスク/インデックスのタスク名属性でグループ化しているようですが、それは個人の名前ですか?

于 2012-12-22T19:15:47.683 に答える
1

:nameへのルートを定義するルールにパラメーターとして追加する必要があるため、次TaskspersonController#indexroutes.rb ようになります。

match 'tasksperson/index/:name' => 'tasksperson#index', as: :tasksperson_path

于 2012-12-22T18:07:33.093 に答える