首页 文章

未定义的方法`model_name'

提问于
浏览
1

我正在为专辑控制器获取这种未定义的方法并为任何解决方案建模?...

用于ActiveRecord :: Relation的未定义方法`model_name'

提取的来源(第6行):

3:>>

4:新专辑

5:

6:= form_for @albums do | f |

7:= f.error_messages

8:%p

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 回答

  • 0
    =form_for @albums do |f|
    

    应该

    =form_for @album do |f|
    

    @album vs @albums,只是根据你的错误信息在这里猜测,在你的代码示例中,它看起来是正确的,不确定它们会有什么不同?错误来自新动作?

  • 2

    从你的问题中发现这个错误并不清楚 - 你已经将代码发布到了六种方法,但你还没有说出哪一个导致了这个错误 . 错误回溯的来源也与您在其下方粘贴的来源不匹配 .

    这个错误的广泛含义是你试图在一些看起来不像 ActiveModel 对象的东西上调用 form_for 之类的东西(相反,你似乎将范围传递给 form_for ,这没有意义) . 做 form_for @albums 肯定会触发这个 .

相关问题