почему link_to не работает (рельсы) - PullRequest
0 голосов
/ 30 октября 2011

У меня есть модель User.И один из методов контроллера это

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

Также у меня есть модель сообщения, и одним из параметров этой модели является user_from: integer

view_messages view имеют

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)

пишет ошибку

Не удалось найти пользователя без идентификатора

, но если я хочу напечататьэто как

 = content_tag_for(:li,message) do
      %p
        From:
        =message.user_from

он печатает его (например, печатает 2), так почему он не может найти пользователя с идентификатором 2, если у меня есть этот пользователь?Что я делаю не так?Заранее спасибо

1 Ответ

2 голосов
/ 30 октября 2011

Общие вопросы:

  1. user_from должно быть user_from_id, в соответствии с соглашением Rails

  2. Тогда у вас должно быть отношение own_to:

    class Message
      belongs_to :user_from
    end
    

    , который автоматически извлекает пользователя из базы данных

  3. Затем вы можете ссылаться на пользователя как атрибут сообщения

    link_to @message.user_from.name, @message.user_from
    

Проверьте все записей Сообщения.Один из них, вероятно, не имеет user_from и вызывает ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...