Ich versuche zu verlinken, um einen Edit Quiz Link hinzuzufügen mein Schienen-app, aber sie immer diese Fehlermeldung:Keine Route stimmt überein {: action => "edit",: controller => "quiz_bs",: id => nil} fehlender Schlüssel: [: id]
No route matches {:action=>"edit", :controller=>"quiz_bs", :id=>nil} missing required keys: [:id]
ich habe auf ähnlichen Beiträge sehe (like this one), aber ihre Antworten scheinen nicht das Problem zu lösen, auch wenn sie ähnliche Situationen präsentieren. wird auch auf meiner Show Benutzer Seite
<li>
<% if @user.quiz_bs == nil %>
<%= link_to "Body Structure Quiz", quiz_bs_path %>
<% else %>
<%= link_to "Body Structure Quiz ✓", edit_quiz_b_path(id: @user.quiz_bs) %>
<% end %>
</li>
aber der Link sein: für diese Linie meiner application.html.erb
Code
Der Fehler wird erscheinen
<h4>Body Structure</h4>
<% if @user.quiz_bs == nil %>
<p><%= link_to "Test Your Body Structure", new_quiz_b_path %></p>
<% else %>
<h3><%= @user.quiz_bs.bscode %></h3>
<p><%= link_to "Retest Results", edit_quiz_b_path(id: @quiz_bs.id) %></p>
<% end %>
Hier ist meine quiz_bs_controller
:
class QuizBsController < ApplicationController
before_action :require_sign_in
def show
@quiz_bs = QuizBs.find(params[:id])
end
def new
@quiz_bs = current_user.quiz_bs || current_user.build_quiz_bs
end
def create
@quiz_bs = QuizBs.new
@quiz_bs.bs01 = params[:quiz_bs][:bs01]
@quiz_bs.bs02 = params[:quiz_bs][:bs02]
@quiz_bs.bs03 = params[:quiz_bs][:bs03]
@quiz_bs.bs04 = params[:quiz_bs][:bs04]
@quiz_bs.bs05 = params[:quiz_bs][:bs05]
@quiz_bs.bs06 = params[:quiz_bs][:bs06]
@quiz_bs.user = current_user
if @quiz_bs.save
flash[:notice] = "Quiz results saved successfully."
redirect_to user_path(current_user)
else
flash[:alert] = "Sorry, your quiz results failed to save."
redirect_to welcome_index_path
end
end
def edit
@quiz_bs = QuizBs.find(params[:id])
@quiz_bs.assign_attributes(quiz_bs_params)
if @quiz_bs.save
flash[:notice] = "Post was updated successfully."
redirect_to user_path(current_user)
else
flash.now[:alert] = "There was an error saving the post. Please try again."
redirect_to welcome_index_path
end
end
def update
@quiz_bs = QuizBs.find(params[:id])
@quiz_bs.assign_attributes(quiz_bs_params)
if @quiz_bs.save
flash[:notice] = "Post was updated successfully."
redirect_to user_path(current_user)
else
flash.now[:alert] = "There was an error saving the post. Please try again."
redirect_to welcome_index_path
end
end
private
def quiz_bs_params
params.permit(:bs01, :bs02, :bs03, :bs04, :bs05, :bs06)
end
end
Und die entsprechenden Routen sind:
quiz_bs GET /quiz_bs(.:format) quiz_bs#index
POST /quiz_bs(.:format) quiz_bs#create
new_quiz_b GET /quiz_bs/new(.:format) quiz_bs#new
edit_quiz_b GET /quiz_bs/:id/edit(.:format) quiz_bs#edit
quiz_b GET /quiz_bs/:id(.:format) quiz_bs#show
PATCH /quiz_bs/:id(.:format) quiz_bs#update
PUT /quiz_bs/:id(.:format) quiz_bs#update
Ich wäre so dankbar für jede Hilfe, um das Problem hier herauszufinden! ändern
'<% = link_to" Body Struktur Quiz ✓ ", edit_quiz_b_path (id: @ quiz_bs.id)%>' – 7urkm3n
In der application.html.erb Seite ist der Wert von @quiz_bs null, weil es den Fehler –
gibt Nur eine Anmerkung: Die 'edit' Methode sollte keine Verarbeitung machen, sondern ist nur für das Rendern der Seite zuständig. Also, Sie wollen nur '@quiz_bs = QuizBs.find (params [: id])' und das ist alles. – GoGoCarl