我有大量静态页面,我已将其放入数据库中。我试图检索这些并动态生成一个网址(类似于:http://railscasts.com/episodes/117-semi-static-pages-revised。我的模型:
class Page < ActiveRecord::Base
validates_uniqueness_of :permalink
def to_param
permalink
end
end
页面控制器:
class PagesController < ApplicationController
before_action :set_page, only: [:show, :edit, :update, :destroy]
# GET /pages
# GET /pages.json
def index
@pages = Page.all
end
# GET /pages/1
# GET /pages/1.json
def show
@page = Page.find_by_permalink!(params[:id])
end
# GET /pages/new
def new
@page = Page.new
end
# GET /pages/1/edit
def edit
@page = Page.find_by_permalink!(params[:id])
end
# POST /pages
# POST /pages.json
def create
@page = Page.new(page_params)
respond_to do |format|
if @page.save
format.html { redirect_to @page, notice: 'Page was successfully created.' }
format.json { render :show, status: :created, location: @page }
else
format.html { render :new }
format.json { render json: @page.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /pages/1
# PATCH/PUT /pages/1.json
def update
respond_to do |format|
if @page.update(page_params)
format.html { redirect_to @page, notice: 'Page was successfully updated.' }
format.json { render :show, status: :ok, location: @page }
else
format.html { render :edit }
format.json { render json: @page.errors, status: :unprocessable_entity }
end
end
end
# DELETE /pages/1
# DELETE /pages/1.json
def destroy
@page.destroy
respond_to do |format|
format.html { redirect_to pages_url, notice: 'Page was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_page
@page = Page.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def page_params
params.require(:page).permit(:name, :permalink, :content)
end
end
路线:
resources :pages, except: :show
resources :products
root to: 'products#index'
get ':id', to: 'pages#show', as: :page
我知道有关rails生成脚手架的方式有一些更新,但我可以;找出需要改变的内容以使其工作?我在两条路线上都遇到了错误,但之前也遇到了@page = Page.find_by_permalink!(params[:id])
的错误。有人说这种方法不见了但我无法理解。我也知道我可以使用像refinerycms这样的东西,但我真的想尝试学习这些东西,所以任何帮助都非常赞赏!
路线错误:
Invalid route name, already in use: 'page' You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes created with `resources` as explained here: http://guides.rubyonrails.org/routing.html#restricting-the-routes-created
完全追踪:
ctionpack (4.1.5) lib/action_dispatch/routing/route_set.rb:430:in `add_route'
actionpack (4.1.5) lib/action_dispatch/routing/mapper.rb:1489:in `add_route'
actionpack (4.1.5) lib/action_dispatch/routing/mapper.rb:1466:in `decomposed_match'
actionpack (4.1.5) lib/action_dispatch/routing/mapper.rb:1447:in `block in match'
actionpack (4.1.5) lib/action_dispatch/routing/mapper.rb:1437:in `each'
actionpack (4.1.5) lib/action_dispatch/routing/mapper.rb:1437:in `match'
actionpack (4.1.5) lib/action_dispatch/routing/mapper.rb:630:in `map_method'
actionpack (4.1.5) lib/action_dispatch/routing/mapper.rb:591:in `get'
config/routes.rb:5:in `block in <top (required)>'
actionpack (4.1.5) lib/action_dispatch/routing/route_set.rb:337:in `instance_exec'
actionpack (4.1.5) lib/action_dispatch/routing/route_set.rb:337:in `eval_block'
actionpack (4.1.5) lib/action_dispatch/routing/route_set.rb:315:in `draw'
config/routes.rb:1:in `<top (required)>'
activesupport (4.1.5) lib/active_support/dependencies.rb:241:in `load'
activesupport (4.1.5) lib/active_support/dependencies.rb:241:in `block in load'
activesupport (4.1.5) lib/active_support/dependencies.rb:232:in `load_dependency'
activesupport (4.1.5) lib/active_support/dependencies.rb:241:in `load'
railties (4.1.5) lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
railties (4.1.5) lib/rails/application/routes_reloader.rb:40:in `each'
railties (4.1.5) lib/rails/application/routes_reloader.rb:40:in `load_paths'
railties (4.1.5) lib/rails/application/routes_reloader.rb:16:in `reload!'
railties (4.1.5) lib/rails/application/routes_reloader.rb:26:in `block in updater'
activesupport (4.1.5) lib/active_support/file_update_checker.rb:75:in `call'
activesupport (4.1.5) lib/active_support/file_update_checker.rb:75:in `execute'
railties (4.1.5) lib/rails/application/routes_reloader.rb:7:in `execute'
railties (4.1.5) lib/rails/application/finisher.rb:83:in `block (2 levels) in <module:Finisher>'
activesupport (4.1.5) lib/active_support/callbacks.rb:438:in `instance_exec'
activesupport (4.1.5) lib/active_support/callbacks.rb:438:in `block in make_lambda'
activesupport (4.1.5) lib/active_support/callbacks.rb:184:in `call'
activesupport (4.1.5) lib/active_support/callbacks.rb:184:in `block in simple'
activesupport (4.1.5) lib/active_support/callbacks.rb:185:in `call'
activesupport (4.1.5) lib/active_support/callbacks.rb:185:in `block in simple'
activesupport (4.1.5) lib/active_support/callbacks.rb:185:in `call'
activesupport (4.1.5) lib/active_support/callbacks.rb:185:in `block in simple'
activesupport (4.1.5) lib/active_support/callbacks.rb:86:in `call'
activesupport (4.1.5) lib/active_support/callbacks.rb:86:in `run_callbacks'
actionpack (4.1.5) lib/action_dispatch/middleware/reloader.rb:83:in `prepare!'
actionpack (4.1.5) lib/action_dispatch/middleware/reloader.rb:71:in `call'
actionpack (4.1.5) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
actionpack (4.1.5) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.1.5) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.1.5) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.1.5) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.1.5) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.1.5) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.1.5) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.1.5) lib/rails/rack/logger.rb:20:in `call'
actionpack (4.1.5) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.1.5) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.1.5) lib/action_dispatch/middleware/static.rb:64:in `call'
rack (1.5.2) lib/rack/sendfile.rb:112:in `call'
railties (4.1.5) lib/rails/engine.rb:514:in `call'
railties (4.1.5) lib/rails/application.rb:144:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'
/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'
/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'
This error occurred while loading the following files:
/home/ubuntu/workspace/traditional_cleaning/config/routes.rb