Проблемы с отображением значений из вложенной формы

#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