0

次のモデルがあります: - ユーザー - リスト - レビュー

ユーザーは多くのリスティングを持つことができ、ユーザーは多くのレビューを持つことができます。

それらは次のようにネストされています。

  resources :users do
      resource :listings
      resource :reviews
  end

新しいレビューを作成するフォームを作成しようとしています。レビューページは次の場所にあります。

http://localhost:3000/users/1/reviews/new

ユーザー#1の新しいレビューを作成したい.

私がする必要があるのは、その :id (この場合は #1) をコントローラーに取得することですが、その方法がわかりません。現在、私の reviews_controller.rb は次のように空白です:

class ReviewsController < ApplicationController

  def new
  end

end

現在のページの :id を取得するために、新しい関数に何を含める必要があるのか​​ わかりません。

4

1 に答える 1

1

現在のユーザーを取得するということですか?これを行うと、ユーザーを取得できます

user_id = params[:user_id] # this will be 1 in this case
# then you can get the user
user = User.find_by_id(user_id)

常にユーザーを取得したい場合は、次before_action(or before_filter in Rails3)のように使用できます。

class ReviewsController < ApplicationController
  before_action :prepare_user

  def new
    # now you can use @user
  end

  private
  def prepare_user
    @user = User.find_by_id(params[:user_id])
  end

end
于 2013-07-14T01:16:15.830 に答える