新手问题 - 寻找数据问题

时间:2011-07-25 08:48:36

标签: ruby-on-rails-3

这可能是一个非常基本的问题,但我无法弄清楚该怎么做。

我需要在不相关的视图中找到id中的用户名。

在我的应用中,我的订单有很多里程碑。每个里程碑都有一个关联用户,尽管里程碑模型和用户模型之间没有关系。在我的里程碑表单中,我使用以下内容来获取用户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

我得到一个no方法错误。

我的问题如下:

  1. 我是否应该让里程碑属于用户?
  2. 如果没有,显示用户名的最佳方式是什么?
  3. - 更新 -

    在我看来,我完全迷失了。如果我使用以下建议:

    @user = User.find(2)
    

    实际上我们需要的是:

    @user = User.find(:milestone_user)
    

    里程碑_用户是整数。但这给了我错误。很困惑......

    - 更新2 -

    在我的索引视图中,我实际上是使用表生成器来显示信息。为简单起见,我删除了额外的代码。我的主页#index视图包含:

    <% 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 个答案:

答案 0 :(得分:1)

@user = User.where(:id => 2)替换为@user = User.find(2)

更新2

最简单的方法 - 从您的home#index方法中删除@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 %>