【发布时间】:2018-06-20 12:09:28
【问题描述】:
我正在尝试链接到将显示每个帖子的热门回复的页面,但是当我设置所有内容并单击 link_to 按钮时,我收到错误消息:
ActiveRecord::RecordNotFound(找不到带有 'id'= 的帖子):
我的观点是这样的:
<% if @post.user == current_user && @post.responses.where(top: true).size >= 1 %>
<a href="#" class="btt"><%= link_to "finalize top", '/top' %>Finalize Top</a>
我将 /top 路由设置为显示顶部响应页面:
get '/top' => 'responses#top'
我知道 Rails 不知道我指的是哪个帖子,但我不确定视图、路由或响应控制器中需要更改什么。
我在响应控制器中也有这个,我认为这会有所帮助,但没有:
def top
@post = Post.find(params[:post_id])
end
非常感谢任何帮助!这是我第一次发帖,对 Ruby on Rails 和编程完全陌生。
这是来自终端的完整错误:
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'
【问题讨论】:
-
您的迁移表是什么样的?是否有 post_id 字段?
-
response表有一个post_id字段:create_table "responses", 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", 默认: false end
标签: ruby-on-rails ruby