未定义的方法`model_name' [英] undefined method `model_name'

查看:58
本文介绍了未定义的方法`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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆