我正在关注此railscast以实现一个处理静态页面的简单解决方案:http://railscasts.com/episodes/117-semi-static-pages-revised?view=asciicast
我遇到的具体问题是让我的页面控制器中的更新方法正常工作。
我的路线档案:
Jog::Application.routes.draw do
root :to => 'categories#index'
devise_for :categories
devise_for :users
resources :categories do
resources :gists
end
resources :sub_categories, :gists, :pages, except: "show, edit, update, destory"
get ':id', to: 'pages#show', as: :page
get ':page/edit', to: 'pages#edit', as: :edit_page
put ':page', to: 'pages#update', as: :update_page
delete ':page', to: 'pages#destroy', as: :destroy_page
end
这是我的模特:
class Page < ActiveRecord::Base
resourcify
attr_accessible :content, :name, :permalink
validates_uniqueness_of :permalink
def to_param
permalink
end
end
我的控制器更新方法:
def update
@page = Page.find_by_permalink!(params[:page])
respond_to do |format|
if @page.update_attributes(params[:page])
format.html { redirect_to @page, notice: 'Page was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @page.errors, status: :unprocessable_entity }
end
end
end
我的错误:未定义的方法`stringify_keys'代表“test”:字符串
我已经研究了其他'stringify_keys'错误,但找不到与此类似的内容。谢谢你的帮助。
答案 0 :(得分:0)
在路由文件中,将值从字符串更改为符号数组。我不认为它理解你试图排除的方法。
resources :sub_categories, :gists, :pages, except: [:show, :edit, :update, :destroy]
如果不是这样,你能指出错误指向的行号吗?在哪里使用test
变量?
答案 1 :(得分:0)
当函数期望集合而不是字符串或符号时,会抛出String_keys错误。上面的资源函数中的:except选项期望一个数组具有符号形式的动作名称......
还告诉我使用测试变量的位置以及引发错误的行......