Pages中的NoMethodError #new undefined方法`pages_index_path'

时间:2017-09-24 11:10:05

标签: ruby-on-rails nomethoderror

我正在尝试使用RoR中的form_for帮助程序生成表单,但我遇到的似乎是路由错误。以下是相关文件:

的routes.rb

Rails.application.routes.draw do
  devise_for :users
  devise_for :models

  root to: 'pages#home'
  resources :pages
end

控制器/ pages_controller.rb

class PagesController < ApplicationController
  def index
    @pages = Pages.all
  end

  def show
    @page = Pages.find(params[:id])
  end

  def edit
    @page = Pages.find(params[:id])
  end

  def update
    @page = Pages.find(params[:id])
    @page.update(page_params)
    redirect_to page_path
  end

  def new
    @page = Pages.new
  end

  def create
    page = Pages.create(page_params)
    redirect_to page_path(page.id)
  end

  private

  def page_params
    params.require(:pages).permit(:name, :content)
  end

end

视图/页/ new.html.erb

<h1>Créer une fiche</h1>

<%= form_for @page do |g| %>
    <div class="form-group">
        <label>Titre de la fiche</label>
        <%= g.text_field :name, class: 'form-control' %>
    </div>
    <div class="form-group">
        <label>Contenu de la fiche</label>
        <%= g.text_area :content, class: 'form-control', size: "60x12" %>
    </div>
    <div class="form-group">
        <%= g.submit "Ajouter la fiche", class: 'btn btn-primary' %>
    </div>
<% end %>

<a href="<%= pages_path %>" class="btn btn-primary">Revenir à la liste des fiches</a>

我看不出有什么问题,输出仍然是:

Displayed error on Mozilla

相同的表格适用于 views / pages / create.html.erb 如果我删除表单并尝试使用@page直接转储<%= @page %>,则会返回#<Pages:0x000055de2b6a2b10>

1 个答案:

答案 0 :(得分:2)

您可以手动为表单指定网址。

<%= form_for @page, url: pages_path, method: :post do |g| %>