0

「user_annversary_path」にリンクしようとすると、誤った記念日のパスが渡されます。user_id は正しい (2) ですが、id (記念日) は 1 である必要があります。

ActiveRecord::RecordNotFound in AnniversaryController#show

Couldn't find Anniversary with id=2
Rails.root: /Users/nelsonkeating/Desktop/ReminDeal

Application Trace | Framework Trace | Full Trace
app/controllers/anniversary_controller.rb:10:in `show'
Request

Parameters:

{"user_id"=>"2",
 "id"=>"2"}

アニバーサリー_コントローラー

  def show 
      @user = current_user
      @anniversary = Anniversary.find(params[:id])
    end

渡された誤ったパラメーターをトリガーするコードを表示する

<%= link_to "Anniversary", user_anniversary_path(@user) %>

ルート

  resources :users do
      resources :anniversary
    end
4

2 に答える 2

2

の場合、オブジェクト (またはオブジェクトを表す ID ) とオブジェクト (またはオブジェクトを表す ID) の2 つの引数user_anniversary_pathを渡す必要があります。たとえば、次のようにできます。UserUserAnniversaryAnniversary

user_anniversary_path(User.first, Anniversary.first)

またはこれ:

user_anniversary_path(1, 2)

1はオブジェクトの で、 はidオブジェクトUser2です。オブジェクト全体をこのメソッドに渡すことに固執することを強くお勧めします。idAnniversary

トレントの例を試したときに失敗する理由@anniversaryは、そのルーティング ヘルパーを呼び出しているアクションに nil があるためです。それについては注意してください。

于 2012-06-13T06:24:14.633 に答える
0

記念日はroutes.rbのユーザー内にネストされていますか?その場合は、ユーザーと記念日を渡してみてください。

<%= link_to "Anniversary", user_anniversary_path(@user, @anniversary) %>

また、ビューからcurrent_userを渡してみませんか?アクセスできませんか?

<%= link_to "Anniversary", user_anniversary_path(current_user, @anniversary) %>

詳細については、http: //guides.rubyonrails.org/routing.html#nested-resourcesを参照してください。

于 2012-06-13T06:01:07.693 に答える