为什么link_to不起作用(rails)

时间:2011-10-30 14:01:15

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我有模特用户。控制器方法之一是

 def view_messages
    @user = User.find(params[:id])
    @message=Message.new
    @messages=@user.messages.reverse
  end

我也有模型消息,这个模型的参数之一是user_from:integer

view_messages视图有

render :partial => 'messages/message', :collection => @messages

和_message.haml有

= content_tag_for(:li,message) do
  %p
    From:
    =link_to User.find(message.user_from).name,User.find(message.user_from)

它写了一个错误

  

找不到没有ID的用户

但如果我想像

那样打印它
 = content_tag_for(:li,message) do
      %p
        From:
        =message.user_from

它打印它(为exaple它打印2),所以为什么它不能找到id为2的用户如果我有这个用户?我做错了什么? 提前致谢

1 个答案:

答案 0 :(得分:2)

一般问题:

  1. user_from应为user_from_id,按Rails惯例

  2. 那么你应该有一个belongs_to关系:

    class Message
      belongs_to :user_from
    end
    

    将自动从数据库中拉出用户

  3. 然后您可以将用户称为消息

    的属性
    link_to @message.user_from.name, @message.user_from
    
  4. 检查消息记录的所有。其中一个可能没有user_from,并导致错误。