#ruby-on-rails #devise #ruby-on-rails-3
#ruby-on-rails #разработать #ruby-on-rails-3
Вопрос:
У меня возникли проблемы с отображением значений из вложенного контроллера. Я могу обновить поле просто отлично, я просто не могу видеть значения на странице показа. Я думаю, что это проблема с Devise.
Моя пользовательская модель выглядит следующим образом:
class User < ActiveRecord::Base
has_one :page
accepts_nested_attributes_for :page, :allow_destroy => true
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :name
has_friendly_id :name, :use_slug => true, :strip_non_ascii => true
validates_presence_of :name
validates_uniqueness_of :name
validates_uniqueness_of :email, :case_sensitive => false
#creates a new page on user create if one doesn't exist
def after_initialize
self.build_page if self.page.nil?
end
end
Модель моих страниц:
class Page < ActiveRecord::Base
belongs_to :user
attr_accessible :tagline, :about, :email, :phone, :website, :blog, :user,
end
routes.rb
Ahoy::Application.routes.draw do
resources :users, :path => '/' do
resource :page
end
devise_for :users, :controllers => { :registrations => "registrations"}
get "home/index"
get "home/about"
root :to => "home#index"
end
В моем users # show у меня есть это:
<p>
<strong>Tagline</strong>
<%= @user.tagline %>
</p>
И я получаю неопределенный метод. Также пробовал, @pages.tagline и т.д.
Я не думал, что мне нужно вносить изменения в мой контроллер? Вы можете помочь?
Ответ №1:
tagline
Метод определен в Page
, поэтому он должен быть @user.page.tagline