2016-04-15 14 views
0

Ich habe versucht, das richtig zu machen, und nach Stunden bin ich endlich verloren. Ich versuche ein Profil für einen Benutzer zu erstellen. Ich habe das Profilmodell und das Benutzermodell aufgrund der Attribute und der Arten von Benutzern, die ich habe, getrennt. Der Benutzer hat eine has_one-Beziehung zum Profil. Mein Problem scheint zu sein, dass ich nicht nur mit den Routen, sondern auch mit dem Controller des Profils verwirrt bin. Ich möchte einfach einen link_to haben, um ein Benutzerprofil zu zeigen. Aber auf den CodeBenutzerprofil anzeigen

user.rb 

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

Profil Modell

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

Routen für Profil

resources :profile 

Profil Controller

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 

ich völlig verloren bin auf das, was ich brauche, um Soll ich etwas zu th hinzufügen? Der Controller des Benutzers wegen der after_create Methode? sollte meine Ressourcen: Profil unter Ressourcen sein: Benutzer?

Der Fehler ich erhalte, wenn ich versuche, ist ein Benutzerprofil zu sehen Couldn't find Profile with 'id'=

die link_to Methode ich benutze ist <%= link_to "View Profile", profiles_show_path(@user) %>

Bitte lassen Sie mich etwas wissen, die von Hilfe Sie für Ihre Zeit sein könnte danken und Hilfe. Ich möchte nicht nur die "Show" eines Benutzers als Profil anzeigen, da die verschiedenen Arten von Benutzern und die Art und Weise, wie ich die Profile modelliere, aussehen.

+0

ich für die Code-Qualität in der Frage nach wie vor ein nuub – leafshinobi25

+0

Basierend auf Ihren Routen entschuldigen (vorausgesetzt, es ist eigentlich 'Ressourcen: profiles') sollten Sie' link_to „Profil ansehen ", profil_path (@ user.profile)' –

+1

<% = link_to "Profil ansehen", @ user.profile%> –

Antwort

0

Verwenden Sie den folgenden Code:

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

Perfect Thank you! – leafshinobi25

Verwandte Themen