Как я могу связать модели и вызвать поле другой таблицы в другом представлении? - PullRequest
0 голосов
/ 09 ноября 2011

Я использую Rails 3.1 и Devise. Как вы знаете, Devise использует таблицу User как свою собственную. Я создал еще одну таблицу с именем User_Profile, в которой хранятся профили пользователей. User_Profile имеет поле user_id, чтобы связать его с User.

Когда конкретный пользователь входит в систему, я хотел бы показать его никнейм, который хранится в User_Profile, поэтому я сделал следующее:

  1. В модели пользователя я добавил has_one :user_profile.

  2. В модели User_Profile я добавил строку belongs_to :user.

  3. В «домашнем» контроллере я добавил эти:

    before_filter :authenticate_user!
    
    def index
      @users = current_user
    end
    
  4. Я изменил представление "home / index" следующим образом:

    <h1>User</h1>
    <table>
      <tr>
        <th>UserNo</th>
        <th>Nickname</th>
      </tr>
      <tr>
        <td><%= users.id %></td>
        <td><%= users.user_profile.nickname %></td>
      </tr>
    </table>
    <br />
    

Но когда я перехожу на example.com/home/, я получаю сообщение об ошибке. Я думаю, что я правильно сделал часть ассоциации, но, вероятно, не контроллер и часть просмотра. Как я могу заставить их работать правильно?

...