2016-06-12 12 views
0

他のユーザーを確認する方法を作成しようとしています。ユーザーがhas_manyレビューの関連性を確認しました

私はwww.site.com/users/1/reviews/newに行ってみると、「リソースが見つかりません」という私のホームページにリダイレクトされます。私はそれが私のルートと関係していると思いますか? リソースassociatoin

routes.rbを

Rails.application.routes.draw do 
    devise_for :users, 
    :controllers => { registrations: 'registrations', 
         omniauth_callbacks: 'omniauth_callbacks'} #<-- that thing is for STRIPE! 
    #STRIPE 
    resources :charges 
    #MAILBOXER 
    resources :conversations, only: [:index, :show, :destroy] do 
     member do 
     post :reply 
     post :restore 
     post :mark_as_read 
     end 
     collection do 
     delete :empty_trash 
     end 
    end 
    resources :messages, only: [:new, :create] 

    #user reviews (THE PROBLEM) 
    resources :users do 
    resources :reviews 
    end 

#categories: 'プロファイル' を取得

ルートのホーム#インデックスを ':[:破壊]、へ:「ユーザー#ショー除くカテゴリ、 「

エンド

01 user.rb

review.rb

class Review < ActiveRecord::Base 
    belongs_to :user 
end 

reviews_controller.rb

class ReviewsController < ApplicationController 
    before_action :set_review, only: [:show, :edit, :update, :destroy] 
    before_action :set_user 
    before_action :authenticate_user! 
    # GET /reviews 
    # GET /reviews.json 
    def index 
    @reviews = Review.all 
    end 

    # GET /reviews/1 
    # GET /reviews/1.json 
    def show 
    end 

    # GET /reviews/new 
    def new 
    @review = Review.new 
    end 

    # GET /reviews/1/edit 
    def edit 
    end 

    # POST /reviews 
    # POST /reviews.json 
    def create 
    @review = Review.new(review_params) 
    @review.user_id = current_user.id 
    @review.user_id = @user.id 
    end 

    # PATCH/PUT /reviews/1 
    # PATCH/PUT /reviews/1.json 
    def update 
    respond_to do |format| 
     if @review.update(review_params) 
     format.html { redirect_to @review, notice: 'Review was successfully updated.' } 
     format.json { render :show, status: :ok, location: @review } 
     else 
     format.html { render :edit } 
     format.json { render json: @review.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /reviews/1 
    # DELETE /reviews/1.json 
    def destroy 
    @review.destroy 
    respond_to do |format| 
     format.html { redirect_to reviews_url, notice: 'Review was successfully destroyed.' } 
     format.json { head :no_content } 
    end 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_review 
     @review = Review.find(params[:id]) 
    end 

    def set_user 
    @user = User.find(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white list through. 
    def review_params 
     params.require(:review).permit(:rating, :comment) 
    end 
end 
+0

私はすぐに、エラーの原因を見ることができないが、私が指摘できるものはほとんどありません。あなたの 'set_user'メソッドは' params [:user_id] 'を使っていなければなりません。また、あなたの作成アクションは、 'user_id'を2回設定しているようです。私は、あなたがcurrent_userか@userのどちらかを使いたいと思うかもしれないと思います – oreoluwa

答えて

0
def set_user 
    @user = User.find(params[:id]) 
end 

は次のようになります。

def set_user 
    @user = User.find(params[:user_id]) 
end 
関連する問題