0

ワーカーとタスクの 2 つのコントローラーがあります。

これは変数ですindex of the tasks_controller:

def index
   @task = Worker.where(:name => params[:worker_id])

   respond_to do |format|
        format.html # show.html.erb
        format.json { render json: @worker }
    end
end

これは私のindex.html.erb of Tasksです:

<table>
  <% @task.each do |task| %>
    <tr>
      <td><%= task.name %></td>
      <td><%= task.task %></td>
      <td><%= task.done %></td>
      <td><%= link_to 'Edit', edit_worker_task_path(task.name,1) %></td>
    </tr>
  <% end %>
</table>

タスクの ID を知る必要があります (たとえば、「1」を設定します)。

ここに画像の説明を入力

コマンドを添付しますrake routes

ここに画像の説明を入力

これは私のものですedit of the task(関連するタスクが得られるかどうかを確認したかっただけです):

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

これは私のものmodels/worker.rbです:

class Worker < ActiveRecord::Base
   attr_accessible :done, :name, :task
end
4

3 に答える 3

1

link_toは、次のようなヘルパーを使用する必要があります。

<%= link_to 'Edit', edit_worker_task_path(id: task.id) %>

また、I18nを使用してアプリケーションをローカライズすることをお勧めします。1つの言語のみを使用している場合でも、ある日、2番目(または複数)の他の言語が必要になる可能性があります。これまでのところ、1つの言語に翻訳することができます。

@task変数は次のように設定する必要があります(変数taskを呼び出すのに、Workerモデルを呼び出すので奇妙です...):

@tasks = Task.where(worker_id: params[:worker_id])
于 2012-12-23T21:57:06.770 に答える
1

多分あなたは次のようなことをするべきです

edit_worker_task_path(task, @task)

ソース コードを読んでいるときに、変な名前 (@task = Worker.where) があることに気付きました。

于 2012-12-23T21:37:01.113 に答える
1

特定のタスクの編集ページにリンクするには、次のようにします。

<%= link_to 'Edit', edit_worker_task_path(task) %>

それがネストされたルートである場合、おそらく edit_task ルートがあることを確認したいので、これを行うことができます:

<%= link_to 'Edit', edit_task_path(task) %>

しかし、@task 変数は実際には Worker モデルのコレクションであるため、edit_task_path(task) ヘルパーを呼び出した場合、編集タスク ページが表示されますが、それは Worker の ID を通過しています。それは理にかなっていますか?

編集 少し雑談した後、必要な Task モデルと Worker モデルを作成し、migration と routes.rb ファイルを整理しました。それから彼を指差してnew_worker_task_path(worker)、労働者のインデックスページを見ました。

于 2012-12-23T21:40:56.993 に答える