單擊洗掉后,我希望我的頁面重定向到當前用戶的投票。像這樣的東西。questions_controller.rb:
def destroy
@poll_id = Question.find(param[:poll_id])
@question.destroy
respond_to do |format|
format.html { redirect_to user_poll_url(current_user.id, @question.poll_id), notice: "Question was successfully destroyed." }
format.json { head :no_content }
end
end
Questions_controller 的內容與生成的rails 相同,但上述更改除外。
question_controller 將 poll_id 作為引數。如何檢索用于重定向的當前值。
def question_params
params.require(:question).permit(:poll_id, :title, :description)
end
路線.rb
resources :users do
resources :polls
end
resource :polls do
resources :questions
end
我得到的錯誤是:
ActiveRecord::RecordNotFound in QuestionsController#destroy
Couldn't find Question without an ID
Extracted source (around line #52):
# DELETE /questions/1 or /questions/1.json
def destroy
@poll_id = Question.find(param[:poll_id])
session[:return_to] ||= request.referer
@question.destroy
第 52 行是@poll_id = Question.find(param[:poll_id])
uj5u.com熱心網友回復:
param[:poll_id]是不正確的。您總是在控制器中通過名為的方法獲取這些屬性,params并且當我們從前端 Rails 提交表單時,它們會將它們映射到特定鍵(模型單數的名稱),例如,獲取poll_id您需要使用的:
question_params[:poll_id]
這相當于:
params[:question][:poll_id]
也不確定你是否poll_id會等于id保存在questions表中。該find方法總是會通過以下id方式找到:
Question.find(param[:poll_id])
方法
SELECT * FROM questions WHERE id = param[:poll_id]
所以 ifpoll_id相當于idthen 那很好,或者您可能想要替換find為,find_by或者您也可以使用params[:id]而不是poll_idif that exists (取決于您的路線)。
有關引數的更多資訊:https ://edgeguides.rubyonrails.org/action_controller_overview.html#parameters
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/460265.html
標籤:轨道上的红宝石 红宝石 ruby-on-rails-7
上一篇:通過Rails中的非主非唯一列關聯ActiveRecord表
下一篇:銷毀操作中的重定向無法正常作業
