簡體   English   中英

如何在Rails視圖中創建指向特定Post對象的鏈接?

[英]How do I create a link to a specific Post object in a Rails view?

我是新手,所以請原諒任何簡單的問題。 我已經開發了一個博客,並且正在做一些自定義。 只是好奇,如果我想在index.html.erb頁面上呈現特定的帖子,那是可能的。 例如,如果我創建一個帖子,標題為:酷帖子,並且表中的post_id為25,那么在我的索引頁面中我可以調用要渲染的特定帖子嗎?

很難確切說明系統的設置方式,但是在Rails中進行“正確”設置的方法是在頁面的Controller以下操作:

def index
   @post = Post.find(25)

   ... Your other code here ...
end

在您的index.html.erb您可以輸出以下內容:

<h2><%= h(@post.title) %></h2>
<%= h(@post.body) %>

當然,我完全猜測您@post上的字段

編輯:如果您要做的只是渲染@post您仍將希望檢索要在控制器中渲染的帖子,但隨后您將要使用一部分,並從index.html.erb文件進行渲染:

  1. 假設,在您的app/views/posts/目錄中創建_post.html.erb文件,然后將所需的任何渲染代碼放在此處(或從現有的app/views/posts/index.html.erb文件中抽象出來。)_注意:請使用局部變量post而不是@post@post局部@post post @post實現最大的靈活性。

  2. 然后在index.html.erb調用它,如下所示:

    '帖子/帖子',:object => @post%>

該調用假定index.html.erb文件與_post.html.erb部分不在同一目錄中。

我認為他的問題是關於渲染/重定向。 您應該做(作為控制器的最后一行)

render @post

要么

redirect_to @post

第一個顯示帖子,第二個顯示創建/更新后的帖子。

盡管dcneiner的解決方案在技術上是正確的,但Rails的方式不是對這些東西進行硬編碼。 博客開始運作后,您將必須直接修改源以更改此帖子。 不建議這樣做。

我建議您在“帖子”表中添加一個額外的列,以表示是否應該在首頁上永久顯示帖子。 這使您可以在創建永久性帖子時僅用一個復選標記來動態更新它。

例如:

class Post < ActiveRecord
  named_scope :featured, :conditions => {:featured => true},
   :order => "created_at DESC"
end

Post.featured將返回您的精選帖子,以供在您的首頁上使用,順序為最新到最早。

如果您一次只想要一篇精選文章,則可以將以下內容添加到文章模型中

  before_validation :highlander_clause

  def highlander_clause
    Post.featured.each{|p| p.update_attribute(:featured, false) if featured
  end

暫無
暫無

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

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