В настоящее время я создаю приложение rails, в котором пользователь входит в панель инструментов и заполняет форму. Я получаю эту ошибку:Rails NoMethodError in Users # index
NoMethodError in Users#index
Showing C:/Users/xxx/Desktop/Sites/form-app/app/views/users/_dashboard_nav.html.erb where line #7 raised
undefined method `organization' for #<User:0x0000000c3e4de0>
UsersController.rb
class UsersController < ApplicationController
before_action :authenticate_user!
def index
@user = current_user
# @organization = current_user.organization.all
end
def show
end
end
_dashboard_nav.html.erb
...
<% if @user.organization.exists? %> <-- This is line 7
<%= link_to "Profile", edit_user_organization_path(@user, @organization), class: "dashboard-nav__item" %>
<% else %>
<%= link_to "Profile", new_user_organization_path(@user, @organization), class: "dashboard-nav__item" %>
<% end %>
...
organization.rb
class Organization < ActiveRecord::Base
belongs_to :user
end
user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :organizations
has_many :form_submissions
end
Теперь я получаю 'неопределенный метод 'организации' за ноль: NilClass' на следующей странице, одна и та же ошибка одинаковая строка все. – aishaq11
Проблема в том, что в организациях '' 'отсутствует' '' <% if @ user.organizations.exists? %> 'Соглашения о рельсах. Так же, как комментарий ... Контроллер _Users не управляет вашей моделью пользователя, потому что она была создана при разработке. Модель пользователя контролируется модулями разработки. Вы можете переопределить их, но не предлагать. Я предлагаю просто использовать 'current_user' в любом месте, где вы находитесь в коде. Кстати, ваш 'users_controller' будет работать с вашими пользовательскими представлениями. –
Прежде чем использовать' current_user' в своем контроллере, вы должны спросить, является ли 'user_signed_in?', А затем, если 'true' использует' current_user', даст вам класс 'nil' в' current_user' и сломает весь ваш код. –