【发布时间】:2015-11-05 23:13:03
【问题描述】:
我得到的错误是这个,它在 Pages#delete 中显示 NoMethodError
nil:NilClass 的未定义方法 `id' 提取的源代码(在第 6 行附近): 4 5 6 7 8 9
<h2>Delete Page</h2>
<%= form_for(:page, :url =>{:action => 'destroy', :id => @page.id}) do |f| %>
<p>Are you sure you want to permanently delete this page ?</p>
我从页面中删除.html.erb
<%= link_to("<< Back to List", {:action => 'index'}, :class =>'back-link') %>
<div class="pages delete">
<h2>Delete Page</h2>
<%= form_for(:page, :url =>{:action => 'destroy', :id => @page.id}) do |f| %>
<p>Are you sure you want to permanently delete this page ?</p>
<p class="reference-name"><%= @page.name %></p>
<div class="form-buttons">
<%= submit_tag("Delete Page") %>
</div>
<% end %>
</div>
我的页面控制器
class PagesController < ApplicationController
layout false
def index
@pages = Page.sorted
end
def show
@page = Page.find(params[:id])
end
def new
@page = Page.new({:name => "Default"})
end
def create
@page = Page.new(page_params)
if @page.save
flash[:notice] = "Page created successfully."
redirect_to(:action => 'index')
else
render('new')
end
end
def edit
@page = Page.find(params[:id])
end
def update
@page = Page.find(params[:id])
if @page.update_attributes(page_params)
flash[:notice] = "Page updated successfully."
redirect_to(:action => 'show', :id => @page.id)
else
render('edit')
end
def delete
@page = Page.find(params[:id])
end
def destroy
page = Page.find(params[:id]).destroy
flash[:notice] = "Page destroyed successfully."
redirect_to(:action => 'index')
end
private
def page_params
params.require(:page).permit(:subject_id, :name, :permalink, :position, :visible)
end
end
end
任何帮助将不胜感激,谢谢
【问题讨论】:
-
您似乎正在访问一个不存在的页面对象的删除页面。您确定 /pages/delete/:id 中的 id 有效吗?
-
你能告诉我们你的 routes.rb 吗?
-
这是我的 route.rb Rails.application.routes.draw do root 'demo#index' #get 'demo/index' match ':controller(/:action(/:id))' , :via => [:get, :post] 结束
标签: ruby-on-rails ruby