Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 不能';找不到带有';id'=_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 不能';找不到带有';id'=

Ruby on rails 不能';找不到带有';id'=,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试链接到一个页面,该页面将显示每篇文章的最佳回复,但是当我设置好所有内容并单击“链接到”按钮时,我会收到错误消息: ActiveRecord::RecordNotFound(找不到id为“”的帖子): 我认为: <% if @post.user == current_user && @post.responses.where(top: true).size >= 1 %> <a href="#" class="btt"><

我正在尝试链接到一个页面,该页面将显示每篇文章的最佳回复,但是当我设置好所有内容并单击“链接到”按钮时,我会收到错误消息:

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>
我知道Rails不知道我指的是哪篇文章,但我不确定视图、路由或响应控制器中需要更改哪些内容

我在响应控制器中也有这个,我认为这会有所帮助,但没有:

def top
  @post = Post.find(params[:post_id])
end
非常感谢您的帮助!这是我第一次发帖,我对RubyonRails和编程一无所知

以下是来自终端的完整错误:

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'
我会尝试:

def top
  @post = Post.find(params[:id])
end

首先,
链接到
类似于
,因此在您看来,将
链接到
放在一个
中就像将一个
放在另一个
中一样。 你认为:

<% if @post.user == current_user && @post.responses.where(top: true).size >= 1 %>
      <%= link_to "finalize top", { controller: :responses, action: :top, id: @post.id },{ class: 'btn btn-default'} %>
在routes.rb中

get '/top' => 'responses#top'

迁移表是什么样子的?有post_id字段吗?响应表有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 endIt在尝试此操作后出于某种原因给出了相同的确切错误。还想添加错误所指向的行是响应控制器中的def set_post控制器:Extracted source(在第46行附近):private def set_post@post=post.find(params[:post_id])EndThanas,我再次抱有希望。我还必须将def set_post改为just:id,而不是:post_id,这样就行了。再次感谢您,当我在stackoverflow上获得更多积分时,我将对此进行投票。这就是程序员应该互相帮助的,我很高兴我能够帮助您
def top
  @post = Post.find(params[:id])
end
get '/top' => 'responses#top'