Jobsと呼ばれる設定したネストされたリソースのURLにIDを正常に渡すのに苦労しています。
オブジェクトをリンクに渡そうとしたときに発生するエラー@job
は次のとおりです。
No route matches {:action=>"edit", :controller=>"jobs", :user_id=>1, :id=>nil}
これは、IDが正しく見つからないことを明確に示しているため、nil
現時点では、ルートを次のように設定しています。
resources :users do
resources :jobs
end
そして私が持っているリンクは<%= link_to "Edit", edit_user_job_path(@user.id,@job) %>
興味深いのは@jobs
、最後に「s」が付いたオブジェクトを渡すと、ページが正しく読み込まれるのに、リンクをクリックすると、そのすべてのユーザーのジョブIDが追加されることです。
編集用のコントローラーには、次のものがあります。
def edit
@user = current_user
@job = @user.jobs.find(params[:id])
end
どんな助けでも本当にありがたいです:)
アップデート
さて、コントローラーの間違ったページでオブジェクトを定義していました(インデックスではなく編集中)。私が今抱えている問題はCouldn't find Job without an ID
コントローラのインデックス定義を次のように更新しました。
def index
@user = current_user
@jobs = @user.jobs.all
@job = @user.jobs.find(params[:id])
end
そして私の見解では(jobs#index)
<% @jobs.each do |f| %>
...
<%= link_to "Edit", edit_user_job_path(@user.id,job) %>
...
<% end %>
私がどこで間違っているのか知っていれば、どんなアドバイスも大歓迎です:)