1

я получаю этот неопределенный метод для управления альбомами и моделировать любые решения ...неопределенный метод `model_name '

неопределенный метод` model_name? Для ActiveRecord :: Relation: Класс

Извлеченные источник (вокруг линии # 6):

3: >>

4: новый альбом

5:

6: = form_for @ albums do | f |

7: = f.error_messages

8:% р

9: = f.label: имя


=link_to 'albums', albums_path 
     >> 
     new album 
    = form_for @album do |f| 
     = f.error_messages 
    %p 
    = f.label :name 
    = f.text_field :name 

    %p 
    = f.label :description 
    = f.text_field :description, :rows => 3 
    %p 
    = f.submit 

%p= link_to "Back to List", albums_path 

class AlbumsController < ApplicationController 
    before_filter :authenticate_user! 

    respond_to :html 
    respond_to :json 

    def index 
    @albums = current_user.albums.paginate :page => params[:page], :per_page => 9, :order => 'created_at DESC' 
    respond_with @albums, :aspect => @aspect 
    end 

    def create 
    aspect = params[:album][:to] 

    @album = current_user.post(:album, params[:album]) 
    if @album.persisted? 
     redirect_to :action => :show, :id => @album.id, :aspect => aspect 
    else 
     redirect_to albums_path(:aspect => aspect) 
    end 
    end 

    def new 
    @album = Album.new 
    end 

    def destroy 
    @album = current_user.find_visible_post_by_id params[:id] 
    @album.destroy 
    respond_with :location => albums_url 
    end 

    def show 
    @person = current_user.visible_people.find_by_person_id(params[:person_id]) if params[:person_id] 
    @person ||= current_user.person 

    @album = :uploads if params[:id] == "uploads" 
    @album ||= current_user.find_visible_post_by_id(params[:id]) 

    unless @album 
     render :file => "#{Rails.root}/public/404.html", :layout => false, :status => 404 
    else 

     if @album == :uploads 
     @album_id = nil 
     @album_name = "Uploads" 
     @album_photos = current_user.visible_posts(:_type => "Photo", :album_id => nil, :person_id => @person.id) 

     else 
     @album_id = @album.id 
     @album_name = @album.name 
     @album_photos = @album.photos 
     end 

     respond_with @album 
    end 
    end 

    def edit 
    @album = current_user.find_visible_post_by_id params[:id] 
    redirect_to @album unless current_user.owns? @album 
    end 

    def update 
    @album = current_user.find_visible_post_by_id params[:id] 

    if current_user.update_post(@album, params[:album]) 
     respond_with @album 
    else 
     render :action => :edit 
    end 
    end 

end 

class Album < ActiveRecord::Base 
    include ROXML 
    xml_attr :name 
    xml_attr :description 

    belongs_to :user 
    belongs_to :person 
    validates :person, :presence => true 

    has_many :photos, :class_name => 'Photo', :foreign_key => :album_id 

    validates_presence_of :name 
    validates :person, :presence => true 



    before_destroy :destroy_photos 

     attr_accessible :name 
end 

ответ

2
=form_for @albums do |f| 

Должно быть

=form_for @album do |f| 

@album против @albums, просто угадать здесь на основе сообщения об ошибке, в вашем примере код выглядит правильно, не знаю, как они могут отличаться? Ошибка от нового действия?

0

Непонятно из вашего вопроса, когда эта ошибка происходит - вы отправили код на полдюжины методов, но вы не сказали, какая из них вызывает эту ошибку. Источник из вашего обратного хода ошибки также не соответствует источнику, который вы вставили чуть ниже.

Что ошибка говорит в целом является то, что вы пытаетесь вызвать что-то вроде form_for на то, что не выглядит достаточно как ActiveModel объекта (вместо этого вы, кажется, минуя область, чтобы form_for, который не имеет смысла) , Выполнение form_for @albums, безусловно, вызовет это.