Как получить доступ к профилю модели Insider users_controller в ruby ​​на рельсах? - PullRequest
0 голосов
/ 06 января 2012

Я хотел бы получить доступ к таблице «профили» из моей модели профиля, которая принадлежит_пользователю: «Модель пользователя».

Во-первых, в моем действии show users_controller я хотел бы получить данные из таблицы профилей.для того, чтобы показать на странице профиля пользователя.

Во-вторых, я бы хотел, чтобы пользователи могли редактировать эти вещи с помощью формы.Я знаю, что это делается в действии обновления?в то время как действие редактирования позволяет отображать форму на странице просмотра редактирования.

Вот мой контроллер:

class UsersController < ApplicationController



  def new
    @user = User.new 
    @title = "Practice"
  end

  def create
    @user = User.new(params[:user])   
    respond_to do |format|
      if @user.save 
        @user.build_profile.save #same as Profile.new(:user_id => @user.id)
        login @user
        UserMailer.join_confirmation(@user).deliver
        format.js   { render :js => "window.location = '#{root_path}'" } 
        flash[:notice] = "Welcome!"
      else

        format.js   { render :form_errors }
      end
    end
  end

  def show

  end

  def update

  end

  def edit

  end



end

1) Как мне получить доступ к моей таблице профилей?Пользователь has_one: профиль Профиль принадлежит: пользователю:

Буду признателен за консультацию.Мне потребовалось полдня, чтобы выяснить, как создать в таблице профилей строку, соответствующую вновь созданному пользователю при регистрации, и теперь следующим шагом будет возможность получить данные из модели в моем users_controller.я знаю, что мог бы просто создать profile_controller и делать что-то там, но я не хочу пытаться делать это прямо сейчас, поскольку я уверен, что есть способ сделать это через users_controller.

Заранее спасибо за совет, данный.

Представление:

<%= @profile_data.first_name %>

<h4><%= current_user.username.capitalize %></h4>
<%= gravatar_image_tag(current_user.email, :alt => @title, :class => "gravatar", :gravatar => { :size => 150 }) %>
<br />

Попытка получить имя_символа из таблицы профилей через users_controller

  def show
    @user = User.find_by_username(params[:username])
    @profile_data = @user.profile

  end

маршрут:

  match ':username' => "users#show"

Я ожидаюсм. имя, хранящееся в столбце first_name таблицы профилей, когда я захожу на localhost: 3000 / username

в нем не отображается имя пользователя.

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Вы можете просто сделать:

@user.profile

Это вернет профиль, принадлежащий пользователю

В противном случае:

Profile.where('whatever condition you fancy')

вернет объект профиля на основеусловия

0 голосов
/ 06 января 2012

Вы хотите has_one:profile на модели User и belongs_to:user на модели профиля, убедившись, что у вас есть соответствующий user_id столбец в таблице профилей. Добавьте accepts_nested_attributes_for:profile к модели пользователя, и затем вы сможете создавать / редактировать профиль пользователя в той же форме для редактирования пользователей.

Читайте о рельсах Примечания к выпуску для вложенных атрибутов и руководства: ассоциации и формы .

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