0

我正在关注这个 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”:字符串

我研究了其他“stringify_keys”错误,但找不到类似的东西。谢谢你的帮助。

4

2 回答 2

0

当函数需要一个集合而不是字符串或符号时,会引发 String_keys 错误。上面资源函数中的 :except 选项需要一个数组,该数组具有符号形式的操作名称...

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

于 2012-10-20T05:54:38.007 回答
0

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

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

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

于 2012-10-19T23:17:45.877 回答