2011-07-25 68 views
0

這可能是一個非常基本的問題,但我不知道該怎麼做。新手問題 - 查找數據問題

我需要從無關視圖中的ID中找到用戶名。

在我的應用程序中,我的訂單有很多里程碑。雖然Milestone模型和用戶模型之間沒有關係,但每個Milestone都有關聯的用戶。在我的里程碑形成,我用下面的搶用戶ID和顯示爲一個名字:

<%= f.input :milestone_user, :as => :select, :multiple => false, :input_html => { :size => 1 }, :label => "", :collection => User.find(:all, :order => "name ASC") %> 

然而,在我的節目里程碑的看法,我只能看到一個ID。

爲了顯示的名字,我是想在控制檯這樣的測試:

@user = User.where(:id => 2) 

但是當我運行:

@user.name 

我得到一個無方法錯誤。

我的問題如下:

  1. 我應該做的里程碑屬於用戶呢?
  2. 如果不是,顯示用戶名的最好方法是什麼?

- 更新 -

我完全失去了約在我看來調用此。如果我使用下面的建議:

@user = User.find(2) 

其實我們需要的是這樣的:

@user = User.find(:milestone_user) 

凡milestone_user是一個整數。但是那給了我錯誤。很迷茫......

- UPDATE 2 -

在我的索引視圖,我實際使用表生成器中顯示的信息。爲了簡單起見,我刪除了額外的代碼。我家#索引視圖包含:

<% for milestone in orders %> 
    <li><%= link_to milestone.name, milestone_path(milestone.id), { 'data-href' => milestone.notes, :class => 'selector' } %></li> 
    <li><%= @users.name %> </li> 
<% end %> 

而且我家的控制器:

@milestones = Milestone.all 
    @users = User.find(params[:milestone_user]) 

回答

1

更換@user = User.where(:id => 2)@user = User.find(2)

更新2

最簡單的方法 - 從您的家#刪除@users = User.find(params[:milestone_user])索引方法並添加正確的視圖文件:

<% for milestone in orders %> 
    <li><%= link_to milestone.name, milestone_path(milestone.id), { 'data-href' => milestone.notes, :class => 'selector' } %></li> 
    <li><%= User.find(milestone.user_id).name %> </li> 
<% end %> 
+0

感謝您的幫助。這工作。這是做這件事的最好方法嗎? –

+0

我該如何翻譯此以使用我的里程碑中的ID?已經嘗試了User.find(:milestone_id)和User。找到(params [:milestone_id]),但都不工作 –

+0

如果你想通過它的id找到一條記錄,那麼它是最好的辦法。你應該使用User.find(params [:milestone_user])。 – Hck