Ich versuche, auf eine Seite zu verlinken, die die besten Antworten für jeden Beitrag zeigt, aber wenn ich alles aufstelle und auf den link_to-Button klicke, bekomme ich die Fehlermeldung:Konnte nicht gefunden werden mit 'id' =
Active :: RecordNotFound (Könnte finden Beitrag nicht mit 'id' =):
ich habe dies in meinen Ansichten:
<% if @post.user == current_user && @post.responses.where(top: true).size >= 1 %>
<a href="#" class="btt"><%= link_to "finalize top", '/top' %>Finalize Top</a>
Und ich habe meine/top Leitwegmenge um die Top-Antworten-Seite anzuzeigen:
get '/top' => 'responses#top'
Ich verstehe, dass Rails nicht weiß, welche Post beziehe ich mich auf, aber ich bin nicht sicher, was in den Ansichten, Routen ändern muss, oder Antworten Controller.
Ich habe dies auch in den Antworten Controller, die ich dachte, würde helfen, aber nicht:
def top
@post = Post.find(params[:post_id])
end
Jede Hilfe ist sehr willkommen! Dies ist meine erste Veröffentlichung und bin komplett neu in Ruby on Rails und Programmierung. Hier
ist der vollständige Fehler von Terminal:
Started GET "/top" for ::1 at 2017-01-21 21:17:03 -0500
Processing by ResponsesController#top as HTML
Post Load (0.1ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" = ? LIMIT 1 [["id", nil]]
Completed 404 Not Found in 2ms (ActiveRecord: 0.1ms)
ActiveRecord::RecordNotFound (Couldn't find Post with 'id'=):
app/controllers/responses_controller.rb:46:in `set_post'
Was wie Sie Ihre Tabellen Migration aussehen? Gibt es ein Post-ID-Feld? –
Es gibt ein Feld post_id für die Antworttabelle: create_table "Antworten", force:: cascade do | t | t.integer "post_id" t.integer "User_id" t.text "body" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.boolean "top" , Standard: falsch Ende –