undefined方法`stringify_keys'表示“test”:String

时间:2012-10-19 22:09:17

标签: ruby-on-rails-3

我正在关注此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'错误,但找不到与此类似的内容。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

在路由文件中,将值从字符串更改为符号数组。我不认为它理解你试图排除的方法。

resources :sub_categories, :gists, :pages, except: [:show, :edit, :update, :destroy]

如果不是这样,你能指出错误指向的行号吗?在哪里使用test变量?

答案 1 :(得分:0)

当函数期望集合而不是字符串或符号时,会抛出String_keys错误。上面的资源函数中的:except选项期望一个数组具有符号形式的动作名称......

还告诉我使用测试变量的位置以及引发错误的行......