0

Tasksadmins と Workers の 2 つのコントローラーがあります。

Tasksadmin という名前のテーブルを定義し、パラメーターを持っています: admin_email、worker_email、task、done です。完了オプションはチェックボックスです。

Tasksadmins コントローラーで、次のように定義しました。

def edit
  @tasksadmin = Tasksadmin.find(params[:id])
end

このコントローラーでは、テーブルのすべての行を編集できます。それはうまくいきます!

Workerscontroller で、次のように定義しようとしました。

def edit
  @tasksadmin = Tasksadmin.find(params[:id])
end

行のパラメータを全て取得したいので行いましたが、 のパラメータのみ変更するオプションをワーカーに持たせますdone

残念ながら、次のエラーが発生しました。

ActiveRecord::RecordNotFound in WorkersController#edit
Couldn't find Worker with id=15

URLが次のとおりであるため、取得したと思います。localhost:3000/workers/15/edit

(注意: workers/15/編集)

問題がどこにあるかを理解するために、次の単語を my に書きましたmodels/workers/edit.html.erb

hello!

問題はURLの作業にあると思いますworkers:/

どうすれば修正できますか?

アップデート:

これは のインデックスですworkerscontroller:

def index
  @tasks_worker = Tasksadmin.where(:worker_mail => current_user.email)

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @workers }
  end
end

これはindex.html.erb:

<h1>Listing workers</h1>

<table>
   <tr>
      <th>Admin_mail</th>
      <th>Task</th>
      <th>Done</th>
      <th></th>
      <th></th>
      <th></th>
   </tr>

   <% @tasks_worker.each do |task| %>
   <tr>
      <td><%= task.admin_mail %></td>
      <td><%= task.task %></td>
      <td><%= task.done %></td>
      <td><%= link_to 'Edit', edit_worker_path(task) %></td>
   </tr>
   <% end %>
</table>
4

3 に答える 3

1

これについてはよくわかりませんが(誰かが私を修正できるかもしれません)、私は思う

@tasksadmin = Tasksadmin.find(params[:id])

変数を定義するだけです@tasksadmin

ここで、localhost:3000/workers/15/edit-URL を呼び出すと、Rails は実際には ID 15 のワーカーを検索しています ( Worker.find(15))

何を達成したいですか?

于 2013-01-01T21:36:27.143 に答える
1

ID=15 の Worker が存在しないようです。

Worker.find(params[:id])

ActiveRecord::RecordNotFoundそのワーカーが存在しない場合に発生します。

Rails コンソールに移動して、次のことを試すことができます。

Worker.find(15)

上げる代わりに find return nil を使用したい場合は、次を使用できます。

Worker.find_by_id(params[:id])
于 2013-01-01T20:55:40.287 に答える
0

Workerscontroller に次の行を追加しました。

load_and_authorize_resource :except => [:edit, :update]

Tasksadminscontroller の次の行:

load_and_authorize_resource :except => [:update, :show]
于 2013-01-02T14:23:10.383 に答える