未定义的方法`model_name' [英] undefined method `model_name'
本文介绍了未定义的方法`model_name'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在为相册控制器获取这个未定义的方法并建模任何解决方案?...
i am getting this undefined method for albums controller and model any solutions?...
ActiveRecord::Relation:Class 的未定义方法`model_name'
undefined method `model_name' for ActiveRecord::Relation:Class
提取的源代码(围绕第 6 行):
Extracted source (around line #6):
3:>>
4:新专辑
5:
6: = form_for @albums do |f|
6: = form_for @albums do |f|
7: = f.error_messages
7: = f.error_messages
8:%p
9: = f.label :name
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
<小时>
推荐答案
=form_for @albums do |f|
应该是
=form_for @album do |f|
@album vs @albums,只是根据您的错误消息在这里猜测,在您的代码示例中它看起来是正确的,不知道它们有什么不同?错误来自新动作?
@album vs @albums, just guessing here based on your error message, in your code example it looks correct, not sure how they could differ? The error is from the new action?
这篇关于未定义的方法`model_name'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文