我正在尝试使用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>
我看不出有什么问题,输出仍然是:
相同的表格适用于 views / pages / create.html.erb
如果我删除表单并尝试使用@page
直接转储<%= @page %>
,则会返回#<Pages:0x000055de2b6a2b10>
答案 0 :(得分:2)
您可以手动为表单指定网址。
<%= form_for @page, url: pages_path, method: :post do |g| %>