显示用户资料

时间:2016-04-15 09:28:49

标签: ruby-on-rails belongs-to user-profile has-one

我一直在努力做到这一点,经过几个小时后,我终于失败了。我试图为用户创建个人资料。我将配置文件模型和用户模型分开,因为我拥有的属性和用户类型。用户与配置文件具有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方法而向用户的控制器添加内容?应该我的资源:个人资料在资源下:用户?

我尝试查看用户个人资料时收到的错误是 Couldn't find Profile with 'id'=

我使用的link_to方法是<%= link_to "View Profile", profiles_show_path(@user) %>

请让我知道任何有用的信息,感谢您的时间和帮助。再次,我不想只是向用户展示&#34;显示&#34;作为个人资料,因为不同类型的用户以及我计划对个人资料进行建模的方式。

1 个答案:

答案 0 :(得分:0)

使用以下代码:

<%= link_to "View Profile", @user.profile %>