這是我的問題:當我運行命令rails server
並轉到localhost:3000我得到頁面「Error 404 not found」,因此我嘗試將localhost:3000/home作爲視圖,但問題仍然存在。這是在日誌中的CMD ..爲什麼在Ruby on Rails中出現「找不到錯誤404」?
C:\Sites\ifurniture>rails s
=> Booting WEBrick
=> Rails 4.2.7.1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-08-16 12:45:45] INFO WEBrick 1.3.1
[2016-08-16 12:45:45] INFO ruby 2.2.4 (2015-12-16) [i386-mingw32]
[2016-08-16 12:45:45] INFO WEBrick::HTTPServer#start: pid=192 port=3000
Started GET "/" for ::1 at 2016-08-16 12:45:47 -0500
ActiveRecord::SchemaMigration Load (1.0ms) SELECT "schema_migrations".* FROM
"schema_migrations"
Processing by Refinery::PagesController#home as HTML
Parameters: {"locale"=>:es}
Refinery::Page Load (1.0ms) SELECT "refinery_pages".* FROM "refinery_pages"
WHERE "refinery_pages"."link_url" = ? LIMIT 1 [["link_url", "/"]]
Refinery::Page Load (7.0ms) SELECT "refinery_pages".* FROM "refinery_pages"
WHERE "refinery_pages"."menu_match" = ? ORDER BY "refinery_pages"."id" ASC LIMI
T 1 [["menu_match", "^/404$"]]
Rendered public/404.html (14.0ms)
Filter chain halted as :find_page rendered or redirected
Completed 404 Not Found in 1974ms (Views: 1775.1ms | ActiveRecord: 11.0ms)
Started GET "/home" for ::1 at 2016-08-16 12:46:00 -0500
Processing by Refinery::PagesController#show as HTML
Parameters: {"path"=>"home", "locale"=>:es}
Refinery::Page Load (29.0ms) SELECT "refinery_pages".* FROM "refinery_pages"
INNER JOIN "refinery_page_translations" ON "refinery_page_translations"."refine
ry_page_id" = "refinery_pages"."id" WHERE "refinery_pages"."parent_id" IS NULL A
ND "refinery_page_translations"."locale" IN ('es', 'en') AND "refinery_page_tran
slations"."slug" = 'home' ORDER BY "refinery_pages"."id" ASC LIMIT 1
Refinery::Page Load (0.0ms) SELECT "refinery_pages".* FROM "refinery_pages"
WHERE "refinery_pages"."menu_match" = ? ORDER BY "refinery_pages"."id" ASC LIMI
T 1 [["menu_match", "^/404$"]]
Rendered public/404.html (0.0ms)
Filter chain halted as :find_page rendered or redirected
Completed 404 Not Found in 1475ms (Views: 1207.8ms | ActiveRecord: 29.0ms)
[2016-08-16 12:46:07] INFO going to shutdown ...
[2016-08-16 12:46:07] INFO WEBrick::HTTPServer#start done.
Exiting
這是我的路線文件..
Rails.application.routes.draw do
# This line mounts Refinery's routes at the root of your application.
# This means, any requests to the root URL of your application will go to Refinery::PagesController#home.
# If you would like to change where this extension is mounted, simply change the
# configuration option `mounted_path` to something different in config/initializers/refinery/core.rb
#
# We ask that you don't use the :as option here, as Refinery relies on it being the default of "refinery"
post '/suscribir' => 'subscribe#create'
mount Refinery::Core::Engine, at: Refinery::Core.mounted_path
end
的pages_Controller.rb代碼..
module Refinery
class PagesController < ::ApplicationController
include Pages::RenderOptions
include Productos
before_action :find_page, :set_canonical
before_action :error_404, :unless => :current_user_can_view_page?
# Save whole Page after delivery
after_action :write_cache?
# This action is usually accessed with the root path, normally '/'
def home
@posts = Blog::Post.newest_first.live.includes(:comments, :categories)
render_with_templates?
end
# This action can be accessed normally, or as nested pages.
# Assuming a page named "mission" that is a child of "about",
# you can access the pages with the following URLs:
#
# GET /pages/about
# GET /about
#
# GET /pages/mission
# GET /about/mission
#
def show
@productos = Refinery::Productos::Producto.all
if should_skip_to_first_child?
redirect_to refinery.url_for(first_live_child.url) and return
elsif page.link_url.present?
redirect_to page.link_url and return
elsif should_redirect_to_friendly_url?
redirect_to refinery.url_for(page.url), :status => 301 and return
end
render_with_templates?
end
protected
def requested_friendly_id
if ::Refinery::Pages.scope_slug_by_parent
# Pick out last path component, or id if present
"#{params[:path]}/#{params[:id]}".split('/').last
else
# Remove leading and trailing slashes in path, but leave internal
# ones for global slug scoping
params[:path].to_s.gsub(%r{\A/+}, '').presence || params[:id]
end
end
def should_skip_to_first_child?
page.skip_to_first_child && first_live_child
end
def should_redirect_to_friendly_url?
requested_friendly_id != page.friendly_id || (
::Refinery::Pages.scope_slug_by_parent &&
params[:path].present? && params[:path].match(page.root.slug).nil?
)
end
def current_user_can_view_page?
page.live? || authorisation_manager.allow?(:plugin, "refinery_pages")
end
def first_live_child
page.children.order('lft ASC').live.first
end
def find_page(fallback_to_404 = true)
@page ||= case action_name
when "home"
Refinery::Page.find_by(link_url: '/')
when "show"
Refinery::Page.friendly.find_by_path_or_id(params[:path], params[:id])
end
@page || (error_404 if fallback_to_404)
end
alias_method :page, :find_page
def set_canonical
@canonical = refinery.url_for @page.canonical if @page.present?
end
def write_cache?
# Don't cache the page with the site bar showing.
if Refinery::Pages.cache_pages_full && !authorisation_manager.allow?(:read, :site_bar)
cache_page(response.body, File.join('', 'refinery', 'cache', 'pages', request.path).to_s)
end
end
end
end
當我嘗試部署所有到Heroku,我的應用程序崩潰,我得到「應用程序錯誤」....請幫助我,我是一個Ruby on Rails新手,謝謝。
我們可以看到您的routes.rb文件嗎? – Ursus
煉油廠的郵政編碼:: PagesController – Ruslan
是的,我編輯的帖子,你可以看到那裏。 – iFurniture