我正試圖在Rails中用form_with創建一個編輯動作....。我的其他CRUD動作都很正常,所以與我的form_with有關......
<%= form_with(model: [@game, @review], local:true) do |form| %>
這就是我試圖創建的標簽,然而當我這樣做時,我得到了這個錯誤
。undefined method `review_path' for #<#<Class:0x00007fedfa8befd0> : 0x00007fedfa8bd298>
你的意思是?view_paths
引導我回到標簽,這是我的控制器
class ReviewsController < ApplicationController
before_action :set_review, only: [: 顯示, :編輯, :更新, :銷毀]
before_action :authenticate_user! , except:[:index, :show]
before_action :correct_user, only: [:edit, :update, :destroy]
def index>>
@reviews = Review.all
end @reviews = Review.all
def show
@review = Review.find(params[:id] )
end end
def new
@game = Game.find(params[:game_id] )
@review = current_user.review.new
結束。
def edit
review = @game.reviews.find(params[:id] )
結束。
def create
@review = current_user.reports.new(review_params)
@game = Game.find(params[:game_id] )
@review.game_id = @game.id
respond_to do |format|
if @review.save
format.html { redirect_to game_reviews_path(@review), notice: ' Review was successfully created.}
format.json { render :show, status: :created, location: @review }
else
format.html { render :new }
format.json { render json: @review.errors, status: :unprocessable_entity }
end
end
end end
def update
@review = current_user.reports.update(review_params)
@game = Game.find(params[:game_id] )
@review.game_id = @game.id
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 { 呈現 json: @review.errors, status: :unprocessable_entity }
end
end
end end
def destroy
@review.destroy
respond_to do |format| |format|.
format.html { redirect_to game_reviews_path(@review), notice: 'review was successfully destroyed.}
format.json { head :no_content }
end }
end
def correct_user
@review = current_user.review.find_by(id: params[:id] )
redirect_to reviews_path, notice:" Not Authorized to Edit This Review" if @review.nil?
end?
私有
def set_review
@review = Review.find(params[:id] )
end end
def review_params
params.require(:review)。 permit(: reviewed_game, :rating, :game_id, :user_id)
結束。
結束。
我的路線...
devise_for :users
資源 : game_studios
資源 :游戲 做
資源 :評論 do
END
根 to: "games#index"
end
對Rails還是很陌生,任何幫助都是巨大的!
謝謝
uj5u.com熱心網友回復:
def edit
end
私有
def set_review
@game = Game.find params[:game_id] #### 這就是修復的關鍵。
@review = Review.find(params[:id] )
結束。
你沒有在before_action中初始化@game實體。
所以當你呼叫<%= form_with(model:[@game, @review], local:true) do |form| %>時
@game是nil,由于這個原因,它不能為這個特定的表單生成一個有效的路由。
所以要么在編輯動作中設定這個@game實體變數,要么在before_action中設定
。轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/313845.html
標籤:
下一篇:我如何繪制和寫入ppm檔案?
