Я постоянно застрял в этом. У меня много разных отношений между пользователями, дружбой и профилями. Ничто не работает для меня, я немного разочарован. Пожалуйста, кто-нибудь может мне помочь?undefined method `profile 'для nil: NilClass Rails
ошибка происходит в этом блоке кода
<%= friendship.friend.profile.name %>
ГЗС ошибки являются:
block in _app_views_users_show_html_erb__2756270183135360761_70272652488180
и
_app_views_users_show_html_erb__2756270183135360761_70272652488180
В моих пользователей/show.html.erb
<h4> <%= current_user.profile.name%> Friends</h4>
<ul>
<% for friendship in @user.friendships %>
<li>
<%= friendship.friend.profile.name %>
(<%= link_to "remove", friendship, :method => :delete %>)
</li>
<% end %>
</ul>
в user.rb модели
has_many :friendships
has_many :friends, through: :friendships
has_one :profile
в friendship.rb модели
class Friendship < ActiveRecord::Base
belongs_to :user
belongs_to :friend, :class_name => 'User'
belongs_to :profile
end
в profile.rb модели
class Profile < ActiveRecord::Base
belongs_to :user
has_many :friendships
has_many :friends, through: :friendships
end
в routes.rb
Rails.application.routes.draw do
devise_for :users, :controllers => { registrations: 'registrations' }
resources :users do
resource :profile
end
resources :friendships
end
в users_controller.rb
def show
@user = current_user
@user = User.find(params[:id])
end
Привет @Scott Schupbach Я считаю, что это может быть правильный ответ, но я не могу удалить дружбу вручную. В моей консоли я сделал «User.find (5) .friendships.destroy» Я могу это сэкономить, но это похоже на то, что дружба не прекращается. Когда я делаю User.find (5) .friendships снова дружба все еще там – DaudiHell
У меня все еще есть «SELECT» дружба ». * FROM« дружба »WHERE« дружба ».« User_id »= $ 1 [[" user_id ", 5 ]] => #, # <Дружба id: 12, user_id: 5, friend_id: 2, created_at:" 2016-03-03 19:32:23 ", updated_at:" 2016-03-03 19 : 32: 23 ">]> irb (main): 026: 0> ' что означает '$ 1' в этой строке? '' дружба ". user_id" = $ 1 [["user_id", 5]] ' –
DaudiHell
Hi again @Scott Schupbach Ваш ответ, похоже, решил мою проблему ... видимо, мне пришлось перезагрузить консоль ... когда я do 'User.find (5) .friendships' теперь я получаю« SELECT »дружеские отношения». * FROM «дружба» WHERE «дружба». «user_id» = $ 1 [["user_id", 5]] => # 'и ошибка исчезла .... Большое спасибо –
DaudiHell