我为专辑控制器获取这种未定义的方法并为任何解决方案建模?...
ActiveRecord :: Relation:Class
的未定义方法`model_name'提取的来源(第6行):
3:>>
4:新专辑
5:
6:= form_for @albums do | f |
7:= f.error_messages
8:%p
9:= f.label:name
=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
答案 0 :(得分:2)
=form_for @albums do |f|
应该是
=form_for @album do |f|
@album vs @albums,只是根据你的错误信息在这里猜测,在你的代码示例中它看起来是正确的,不确定它们会有什么不同?错误来自新行动?
答案 1 :(得分:0)
当你发现这个错误时,你的问题并不清楚 - 你已经将代码发布到了六种方法,但你还没有说出哪一个导致了这个错误。错误回溯的来源也与您在其下方粘贴的来源不匹配。
错误的广泛含义是,您尝试在类似form_for
对象的内容上调用类似ActiveModel
的内容(相反,您似乎将范围传递给{{ 1}},这没有意义)。做form_for
肯定会触发这一点。