用于#的未定义方法`popups_path'

时间:2015-07-08 13:27:11

标签: ruby-on-rails

我创建模型,视图和控制器,但是当我在new.html.haml文件中添加表单代码时。它开始显示错误。路线定义如下

模型popups.rb

class Popups < ActiveRecord::Base
  attr_accessible :title, :body, :slug, :pipelinetype
end

控制器popups_controller.rb

class PopupsController < ApplicationController
  def new
    @popups = Popups.new
  end

  def create
    @popups = Popups.new(params[:url])
    if @popups.save
      flash[:popups] = @popups.id
      redirect_to new_popups_url
    else
      render :action => "new"
    end
  end

  def show
    @popups = Popups.find(params[:id])
    redirect_to @popups.url
  end

end

观看弹出式广告 - new.html.haml

= simple_form_for @popups do |f|
  = f.input :title
  = f.input :body
  = f.input :pipelinetype
  = f.input :slug
  = f.submit

routes.rb resources :popups, :only => [:show, :new, :create]

迁移文件

create_table :popups do |t|
      t.string :title
      t.text :body
      t.string :slug
      t.string :pipelinetype

      t.timestamps
    end

我在给定网址上遇到以下错误

:3000/popups/new  -  undefined method `popups_index_path' for #

**:3000/popups   -**  
Unknown action
The action 'show' could not be found for MainController

最初我使用弹出名称创建模型和控制器,但稍后将其更改为建议的弹出窗口

代码或路线是否有问题,或者我错过了什么。

我使用http://www.sitepoint.com/building-your-first-rails-application-views-and-controllers/作为参考

2 个答案:

答案 0 :(得分:1)

永远记住,当您使用resources时,您应该提供 复数名称(例如,弹出窗口) 。如果您需要 单数名称(即弹出式广告) ,请使用resource代替resources

有关详细信息,请参阅Singular Resources

答案 1 :(得分:0)

你必须将你的路线包括在内。 resources :popups, only: [:show, :new, :create] 应该 popup_index POST /popup(.:format) popup#create

实际上你的路线看起来像这样:

new_popup GET /popup/new(.:format) popup#new

popup GET /popup/:id(.:format) popup#show

account | amount | date_time