3

當用戶在個人資料上發帖時,個人資料所有者的用戶ID會以整數形式保存在:poster(在Post模式中)。我如何查找和呈現用戶/用戶的信息?在Posts模型中保存了用戶標識,該如何呈現該用戶?

的更多信息:

  1. 使用Slugged gem
  2. 試圖生成帖子的飼料,當我在查看通話feed_item.user,它引導我到發佈後的用戶,而不是用戶對該帖子進行了描述。

源項目視圖

enter image description here

飼料查看

enter image description here

頁控制器主頁功能

enter image description here

@postee是我根據每個帖子保存的用戶ID找到用戶的微弱嘗試。理想情況下,我希望能夠鏈接到發佈信息的用戶,並在我的視圖中顯示有關該用戶的信息(例如,用戶的用戶名)。我一直在修補一段時間,卡住了,有什麼想法?非常感謝您的幫助,請讓我知道是否需要任何其他信息!

編輯

POST表單視圖

<%= form_for @post do |f| %> 
<%= f.hidden_field :name, :value => current_user.name %> 
<%= f.hidden_field :poster, :value => @user.id %> 
<div class="postbox"> 

    <div class="postfield"> 
    <%= f.text_area :content %> 
    </div> 
    <div class="postsubmit"> 
    <%= f.submit "Submit" %> 
    </div> 
</div> 

用戶控制顯示操作

def show 
    @user = User.find_by_cached_slug(params[:id]) 
    @posts = Post.find_all_by_poster(@user.id) 
    @post = Post.new 
if user_signed_in? 
    @post = Post.new 
    end 

respond_to do |format| 
    format.html # show.html.erb 
    format.xml { render :xml => @user } 
end 
end 
+1

而不是使用你的代碼的截圖,請您的代碼只是粘貼到四個空間縮進 – 2011-05-22 09:53:11

+0

問題堆棧溢出,你解決問題後,請勿刪除您的問題。 – 2011-05-25 07:14:01

+0

您可以將您的解決方案作爲答案發布嗎,或者如果您使用它,請接受stephenmurdoch的答案?我相信很多其他人都想知道如何解決這個問題。 – 2011-05-25 15:35:07

回答

2

最終,我決定以一種非標準的方式來完成這項工作,只是爲了使功能正常工作。儘管我懷疑如果你能以某種方式將用戶標識綁定到一個新模型(包含許多,屬於......等等)的關係,那麼它的工作方式會更好。(我相信這就是stephenmurdoch的回答嘗試的問題,只是有一個問題:user_id已經被綁定到發佈用戶。)

當每個帖子被創建後,我保存了更多的用戶信息,然後呈現個人檔案發布接收者的每個供給項目的信息。此外,由於用戶具有基於cached_slug的唯一網址,因此我可以使用<%= link_to feed_item.postername,feed_item.postercachedslug%>創建指向該帖子的配置文件的鏈接。

POST表單視圖

<%= form_for @post do |f| %> 
<%= f.hidden_field :name, :value => current_user.name %> 
<%= f.hidden_field :poster, :value => @user.id %> 
<%= f.hidden_field :postername, :value => @user.name %> 
<%= f.hidden_field :posterusername, :value => current_user.username %> 
<%= f.hidden_field :postercachedslug, :value => @user.cached_slug %> 
<div class="postbox"> 

    <div class="field"> 
    <%= f.text_area :content %> 
    </div> 
    <div class="submit"> 
    <%= f.submit "Submit" %> 
    </div> 
</div> 

源項目視圖

<div class="profilepic"> 
<% if feed_item.user.profile_file_name == nil %> 
<%= link_to image_tag("thumb.jpeg"), feed_item.user %> 
<% else %> 
    <%= link_to image_tag(feed_item.user.profile.url(:thumb)), feed_item.user %> 
<% end %> 
</div> 
<span class='feeditem'> 
    <div class='row1'> 
     <strong> 
     <span class="user"><%= link_to feed_item.name, feed_item.user %> </span> 
     </strong> 
     <%= image_tag("arrow.png") %> 
     <span class="name"><%= link_to feed_item.postername, feed_item.postercachedslug %></span> 
    </div> 
    <div class='row2'> 
    <span class="content"><%= feed_item.content %></span> 
    </div> 
    <div class='row3'> 
<span class="timestamp"> 
    <%= time_ago_in_words(feed_item.created_at) %> ago. 
</span> 
    <% if current_user?(feed_item.user) %> 
     <%= link_to "delete", feed_item, :method => :delete, 
        :confirm => "You sure?" %> 
    <% end %> 
    </div> 
    </span> 
4

你的方法是有點奇怪,在您使用屬性:poster,而不是:user_id這是軌道的方便重刑

無論如何,嘗試在您看來堅持這樣的事情

@post.poster.email # to return the email address of your user 

上面的代碼取決於有你想返回,無論是用戶名等任何屬性的:email屬性 改變電子郵件的用戶模型

您是否在模型中指定的帖子和用戶之間存在關係?即belongs_to :user

是否有一個原因,你沒有使用model_name_id的常規關聯記錄?

+0

嘿斯蒂芬,謝謝你的建議!該方法很奇怪,因爲:user_id包含發佈帖子的用戶的用戶ID,而:poster包含配置文件發佈用戶的用戶ID。在嘗試你的建議,我不使用@post實例變量,但我試過post.poster.email和feed_item.poster.email,既沒有工作(未定義的方法'電子郵件'爲9:Fixnum),但沒有添加.email最後,都呈現正確的:海報ID。並且我建立了關係,Post belongs_to:user,User has_many:posts。還有什麼我可以嘗試?謝謝! – ahuang7 2011-05-22 04:27:27

+0

@ ahuang7:請向我們展示您如何定義「海報」方法。 – 2011-05-22 09:53:50

+0

hey ryan,我在編輯中發佈了上面的代碼。我感謝你的幫助,並會記住粘貼代碼,而不是將來的屏幕截圖!作爲一個側面的問題,如果有更好的方法來重構我的代碼,我會非常有興趣將它作爲一名鐵軌學生學習。 – ahuang7 2011-05-22 20:15:53

相關問題