我将rails版本从3.2.13升级到4.0.0,我还升级了我的gem。当我从本地服务器运行应用程序时,这是我收到的错误:
在2016-06-24 11:54:37 0530开始获取127.0.0.1的“/signup.html”
ActionController::RoutingError-未定义AccountsController的局部变量或方法inherit_resources:Class:actionpack(4.0.0)lib/action_dispatch/routing/route_set。rb:69:in
rescue-in-controller的actionpack(4.0.0)lib/action_dispatch/routing/route_set。rb:64:incontroller的actionpack(4.0.0)lib/action_dispatch/routing/route_set。rb:44:in
调用“actionpack(4.0.0)lib/action_dispatch/trively/router”。rb:71:inblock-in-call'
调用“actionpack(4.0.0)lib/action_dispatch/routing/route_set”。rb:655:in
actionpack(4.0.0)lib/action_dispatch/trively/router。rb:59:in调用“meta_request(0.4.0)lib/meta_requist/middlewares/app_request_handler”。rb:13:in
调用'
meta_request(0.4.0)lib/meta_requist/middlewares/metarequest_handler。rb:13:in调用'
block-in-call'warden(1.0.6)lib/warden/manager中的块。rb:34:in
warden(1.0.6)lib/warden/manager。rb:35:in调用“client_side_validations(3.0.12)lib/client_side_validations/middleware”。rb:17:in
call'rack(1.5.5)lib/rack/etag中。rb:23:incall'rack(1.5.5)lib/rack/conditionalget。rb:25:in
call'rack(1.5.5)lib/rack/head中。rb:11:in调用“remotipart(1.2.1)lib/remotipart/middleware”。rb:27:in
调用“actionpack(4.0.0)lib/action_dispatch/middleraftware/params_parser”。rb:27:in调用'
call'rack(1.5.5)lib/rack/session/abstract/id中。rb:225:in
actionpack(4.0.0)lib/action_dispatch/中间件/flash。rb:241:在context'rack(1.5.5)lib/rack/session/abstract/id。rb:220:in
调用'
actionpack(4.0.0)lib/action_dispatch/midleftware/cookies。rb:486:in调用“activerecord(4.0.0)lib/activerecord/query_cache”。rb:36:in
调用“activerecord(4.0.0)lib/activerecord/connection_adapters/abstract/connection_pool”。rb:626:in调用“activerecord(4.0.0)lib/activerecord/migration”。rb:369:在
call中调用“actionpack(4.0.0)lib/action_dispatch/middleraftware/callbacks”。rb:29:inblock-in-call'
_run_139117187983862327_call__callbacks'activesupport(4.0.0)lib/active_support/callbacks中。rb:80:in
activesupport(4.0.0)lib/active_support/callbacks。rb:373:在runccallbacks的actionpack(4.0.0)lib/actiondispatch/middleraftware/callbacks。rb:27:in
调用'
rails-dev-tooks(1.2.0)lib/rails_dev_tweaks/granular_autoload/中间件。rb:36:in调用'
call‘airbrake(4.3.7)lib/arbrake/rails/middleware。rb:13:in
actionpack(4.0.0)lib/action_dispatch/中间件/remote_ip。rb:76:in调用“better_errors(2.1.1)lib/better_errors/middleware”。rb:84:in
protected_app_call的better_errors(2.1.1)lib/better_errors/middleware。rb:79:inbetter_errors_call(2.1.1)lib/better_errors/middleware中。rb:57:in
调用'
actionpack(4.0.0)lib/action_dispatch/midleftware/debug_exceptions。rb:17:in调用'
调用“meta_request(0.4.0)lib/meta_requist/middlewares/headers”。rb:16:in
rack contrib(1.4.0)lib/rack/contrib/response_headers。rb:17:in调用“actionpack(4.0.0)lib/action_dispatch/midleftware/show_exceptions”。rb:30:in
调用'
railties(4.0.0)lib/rails/rack/logger。rb:38:incallapp'railties(4.0.0)lib/rails/rack/logger中。rb:21:in
块中调用“activesupport(4.0.0)lib/active_support/tagged_logging”。rb:67:在标记为“activesupport(4.0.0)lib/active_support/tagged_logging”的块中。rb:25:in
标记了“activesupport(4.0.0)lib/active_support/tagged_logging”。rb:67:intagged'铁路(4.0.0)lib/rails/rack/logger。rb:21:in
调用“actionpack(4.0.0)lib/action_dispatch/middleraftware/requestid”。rb:21:incall'rack(1.5.5)lib/rack/methodoveride。rb:21:in
call'rack(1.5.5)lib/rack/runtime中。rb:17:in调用“activesupport(4.0.0)lib/active_support/cache/stategy/local_cache”。rb:83:in
call'rack(1.5.5)lib/rack/lock中。rb:17:in调用“actionpack(4.0.0)lib/action_dispatch/middleraftware/static”。rb:64:in
调用'airbrake(4.3.7)lib/arbrake/user_informator。rb:16:在_call的airbrake(4.3.7)lib/arbrake/user_informer中。rb:12:in
call'railties(4.0.0)lib/rails/engine中。rb:511:incall'railties(4.0.0)lib/rails/application。rb:97:in
call'rack(1.5.5)lib/rack/content_length中。rb:14:in调用“thin(1.5.1)lib/thin/connection”。rb:81:in
block-in-pre_process'thin(1.5.1)lib/thin/connection。rb:79:inpre_process'thin(1.5.1)lib/thin/connection。rb:54:in
process的thin(1.5.1)lib/thin/connection。rb:39:inreceive_data'事件机器(1.0.9)lib/eventmachine。rb:193:in
run'thin(1.5.1)lib/thin/backends/base。rb:63:instart‘thin(1.5.1)lib/thin/server’。rb:159:in
start'rack(1.5.5)lib/rack/handler/thin中。rb:16:inrun'rack(1.5.5)lib/rack/server。rb:264:in
start'railties(4.0.0)lib/rails/commands/server中。rb:84:instart’railties(4.0.0)lib/rails/commands中。rb:78:in
block-in'railties(4.0.0)lib/rails/commands中的块。rb:73:在<代码>中
在我以前的版本中,routes文件是这样的:
match '/signup' => 'accounts#new', :plan => 'year'
升级后,我将其更改为:
get '/signup' => 'accounts#new', :plan => 'year'
对于所有路由,“匹配”将替换为“get”。
这是我们用inherited_resourcesaccounts_controller。
class AccountsController < ApplicationController
inherit_resources
ssl_required :new, :create
before_filter :authenticate_user!, :except => [:new, :create]
...................
end
我找不到它们被使用的原因,在Gemfile中也找不到。请帮我修复这个错误。
inherit_resources旨在干涸使用REST约定的控制器。它是一个已弃用的gem,不再在Rails 4中维护。inherit_resources将基本上继承自预定义了REST方法的::Base。
相反,您可以删除它并在控制器中定义路由,就像您通常所做的那样:
class AccountsController < ApplicationController
ssl_required :new, :create
before_filter :authenticate_user!, :except => [:new, :create]
def index
@accounts = Accounts.all
end
def show
@account = Account.find(params[:id])
end
def new
@account = Account.new
end
def create
@account = Account.new(account_params)
if @account.save
redirect_to @account
else
render 'new'
end
end
def edit
@account = Account.find(params[:id])
end
def update
@account = Account.find(params[:id])
if @account.update_attributes(account_params)
flash[:notice] = "Successfully updated account!"
redirect_to @account
else
render 'edit'
end
end
def destroy
@account = Account.find(params[:id])
@account.destroy
redirect_to accounts_path
end
private
def account_params
params.require(:account).permit(:name, :email, etc) # Look up strong params if you are unfamiliar. The name, email, etc. are going to be the only permitted params passed in the methods above as a safety feature so you have to permit the fields being created here.
end
这是继承资源添加到控制器中的大纲,目的是拥有“胖模型和瘦控制器”。你可以找到其他做类似事情的宝石,但在我看来,为了便于阅读,我宁愿自己添加这些方法。
编辑:它正在添加这些方法定义,但根据您的应用程序,将定义这些方法中的内容。这将是我最好的粗略估计。Rails 4中的新功能是添加了强参数。在创建和更新操作中,您可以看到account_params是从私有方法调用的,而不是使用方法中的原始参数进行更新。
本文向大家介绍Laravel框架路由和控制器的绑定操作方法,包括了Laravel框架路由和控制器的绑定操作方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Laravel框架路由和控制器的绑定操作方法。分享给大家供大家参考,具体如下: 路由和控制器的关系 路由文件地址在\app\Http\routes.php,我们来看两种不同的路由。 以上均为绑定匿名函数的路由,虽然可以返回视图,也可以
在Laravel5.2中,我想将所有未定义的url路由到一个特定的控制器。 我正在开发类似CMS的功能,我想要这个东西。 所以url喜欢 www.domain.com/post/po-t/some/thing www.domain。com/profile 所以第一个url应该重定向到页面函数,第二个url应该重定向到配置文件函数 基本上,我想要一些关于N-number或参数的想法,因为在页面中,它
我订阅了一个方法中的一个可观察的,需要在另一个方法中取消订阅。从一个初始化函数调用子计数器()方法,其内容工作正常。 当我调用我的touchActivate()函数时,它包含一个对存储的变量的unsubscribe函数,但是它会抛出一个错误,因为未定义。控制台日志记录返回一个未定义的对象。 在类的顶部,我定义了一个变量:
我一直在致力于将我们的应用程序从React.js 0.13升级到15.4.2以及与之相关的依赖项。我可能很接近,但经过4天50个小时后,我终于到了终点,我最后的希望。 在升级过程中,react路由器被升级到4.0.0版,每个文档、教程和堆栈溢出问题都显示了如何编写路由器(所有这些都必须是正确的),但是,当我这样做时,它总是失败。要么说历史是必需的属性,要么当我通过示例添加它时,它仍然显示为未定义和
自定义路由 easySwoole支持路由拦截。其路由利用fastRoute实现,因此其路由规则与其保持一致,该组件的详细文档请参考 GitHub文档 路由定义 若需要再easySwoole使用路由拦截功能,请在应用目录(默认为App)下,建立Router类,井继承Core\AbstractInterface\AbstractRouter实现addRouter方法,如果在类UNIX系统下请严格注意文
7.5.10 局部变量的定义 局部变量的定义格式: LOCAL 变量名[[数量]] [:数据类型] [,变量名[[数量]] [:数据类型]]... 伪指令LOCAL的作用是说明一个或多个临时的局部变量(位于堆栈中)。局部变量必须在任何指令之前加以说明,并可用多个LOCAL伪指令来说明其局部变量。 在子程序中,若说明了某个局部变量,则子程序体中的指令就可使用该局部变量。汇编程序会把对它的引用转换成用