簡體   English   中英

找不到帶有“ id” =的帖子

[英]Couldn't find Post with 'id'=

我正在嘗試鏈接到一個頁面,該頁面將顯示每個帖子的熱門回復,但是當我設置所有內容並單擊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'

我會嘗試:

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

首先link_to類似於<a>在你看來是這樣,你應該把link_to<a>就像是把一個<a>另一個內部<a> 您認為:

<% 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'} %>

在您的控制器中:

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

在routes.rb中

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM