_applicant.html.erb のリンクは、ブラウザーでは次のようhttp://localhost:3000/needs/3/applicants.1
に表示されます。これをクリックすると、ブラウザーに次のように表示されます。
Routing Error
No route matches [PUT] "/needs/3/applicants.1"
この特定の申請者行の承認列を更新したい。基本的には、申請者コントローラの更新メソッドにデータを送信したいです。これを行うためにコードを変更するにはどうすればよいですか?
_applicant.html.erb
<%= link_to 'Accept Applicant', need_applicants_path(applicant.need_id, applicant.id), :method => :put, :action => "update", :applicant => {:acceptance => true} %>
rake ルートを実行してこれを取得しました:
PUT /needs/:need_id/applicants/:id(.:format) applicants#update
ルート.rb:
resources :needs, except: [:new] do
resources :applicants
end
申請者_controller.rb
class ApplicantsController < ApplicationController
def update
@need = Need.find(params[:need_id])
@applicant = @need.applicants.find(params[:id])
if @applicant.update_attributes(params[:applicant])
flash[:success] = 'Your applicant has been accepted/rejected!'
redirect_to @need
else
@need = Need.find(params[:need_id])
render 'needs/show'
end
end
end