J'essaie de créer un lien vers une page qui affichera les meilleures réponses pour chaque message, mais quand je configure tout et cliquez sur le bouton link_to j'obtiens le message d'erreur:Impossible de trouver Message avec 'id' =
ActiveRecord :: RecordNotFound (Impossible de trouver après avec 'id' =):
je dans mes vues:
<% if @post.user == current_user && @post.responses.where(top: true).size >= 1 %>
<a href="#" class="btt"><%= link_to "finalize top", '/top' %>Finalize Top</a>
Et j'ai mon/set top de la route pour afficher les meilleures réponses page:
get '/top' => 'responses#top'
Je comprends que Rails ne sait pas quel poste je parle, mais je ne sais pas ce qui doit changer dans les vues, des itinéraires ou contrôleur de réponses.
J'ai aussi cela dans le contrôleur de réponses que je pensais aider, mais n'a pas:
def top
@post = Post.find(params[:post_id])
end
Toute aide est très appréciée! C'est ma première publication et je suis complètement nouveau à Ruby on Rails et à la programmation.
Voici l'erreur complète du 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'
Qu'est-ce que vos tables de migration ressemblent? Y a-t-il un champ post_id? –
Il existe un champ post_id pour la table des réponses: create_table "responses", force:: cascade do | t | t.integer "post_id" t.integer "user_id" t.text "corps" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.boolean "top" , par défaut: false fin –