Отображение профиля пользователя

Я пытался понять это правильно, и через несколько часов я, наконец, просто потерялся. Я пытаюсь создать профиль для пользователя. Я разделил модель профиля и модель пользователя из-за атрибутов и типов пользователей, которые у меня есть. Пользователь имеет отношение has_one к профилю. Моя проблема, кажется, я запутался не только с маршрутами, но и с контроллером профиля. Я просто хочу иметь возможность иметь link_to для отображения профиля пользователя. Но к коду

user.rb

has_one  :profile
after_create :create_profile
def create_profile
  self.profile.create(:name => self.user_name)
end

Модель профиля

profile.rb
belongs_to :user, required: true, autosave: true

маршруты для профиля

resources :profile 

профильный контроллер

class ProfilesController < ApplicationController
  before_action :owned_profile, only: [:edit]
  before_action :get_profile
  layout "profile"
  respond_to :html, :js

  def show
    @activities = PublicActivity::Activity.where(owner:@user).order(created_at: :desc).paginate(page: params[:page], per_page: 10)
  end

  def followers
    @followers = @user.user_followers.paginate(page: params[:page])
  end

  def edit
  end

  def update
    if @profile.update(profile_params)
      flash[:notices] = ["Your profile was successfully updated"]
      render 'show'
    else
      flash[:notices] = ["Your profile could not be updated"]
      render 'edit'
    end
  end

  private

  def profile_params
    params.require(:profile).permit(:name, :cover)
  end

  def owned_profile
    unless current_user == @user
      flash[:alert] = "That profile doesn't belong to you!"
      redirect_to root_path
    end
  end

  def get_profile
    @profile = Profile.find(params[:id])
  end
end

Я совершенно не понимаю, что мне нужно делать, должен ли я добавить что-то в пользовательский контроллер из-за метода after_create? мои ресурсы :profile должны быть под ресурсами :user?

Ошибка, которую я получаю, когда пытаюсь просмотреть профиль пользователя: Couldn't find Profile with 'id'=

метод link_to, который я использую, это <%= link_to "View Profile", profiles_show_path(@user) %>

Пожалуйста, дайте мне знать все, что может быть полезно, спасибо за ваше время и помощь. опять же, я не хочу просто показывать «шоу» пользователя как профиль из-за разных типов пользователей и того, как я планирую моделировать профили.


person leafshinobi25    schedule 15.04.2016    source источник
comment
Прошу прощения за качество кода в вопросе все еще нууб   -  person leafshinobi25    schedule 15.04.2016
comment
Основываясь на ваших маршрутах (при условии, что это на самом деле resources :profiles), у вас должно быть link_to "View Profile", profile_path(@user.profile)   -  person j-dexx    schedule 15.04.2016
comment
‹%= link_to View Profile, @user.profile %›   -  person Chakreshwar Sharma    schedule 15.04.2016
comment
@ChakreshwarSharma: да, этот лучше :)   -  person Sergio Tulentsev    schedule 15.04.2016


Ответы (1)


Используйте приведенный ниже код:

<%= link_to "View Profile", @user.profile %>
person Chakreshwar Sharma    schedule 15.04.2016
comment
Отлично спасибо! - person leafshinobi25; 16.04.2016