Ruby on rails 将新页面操作添加到Refinery中的会话脚手架
我正在构建一个精炼厂cms应用程序,并尝试添加一个替代的登录屏幕,该屏幕将使用.NET Web服务。然而,虽然使用该服务的代码非常简单,但我似乎无法让rails或refinery确认该服务的视图确实存在,因此我在url中输入的任何路径都不会将我带到备用登录的视图,我也不明白为什么。my view的文件位于/views/sessions/dotnet.html.erb,当前my sessions\u controller.rb包含该方法的定义Ruby on rails 将新页面操作添加到Refinery中的会话脚手架,ruby-on-rails,refinerycms,Ruby On Rails,Refinerycms,我正在构建一个精炼厂cms应用程序,并尝试添加一个替代的登录屏幕,该屏幕将使用.NET Web服务。然而,虽然使用该服务的代码非常简单,但我似乎无法让rails或refinery确认该服务的视图确实存在,因此我在url中输入的任何路径都不会将我带到备用登录的视图,我也不明白为什么。my view的文件位于/views/sessions/dotnet.html.erb,当前my sessions\u controller.rb包含该方法的定义 class SessionsController &l
class SessionsController < ::Devise::SessionsController
.
.
.
def create
super
rescue ::BCrypt::Errors::InvalidSalt, ::BCrypt::Errors::InvalidHash
flash[:error] = t('password_encryption', :scope => 'users.forgot')
redirect_to new_user_password_path
end
def dotnet
.
.
.
end
.
.
.
end
我试过这些方法,但都不管用如何设置它,使其实际上有一个与/views/sessions/dotnet.html.erb文件相对应的url?看起来您并没有实际为SessionController#dotnet添加路由 您将需要以下内容:
Quicksmile::Application.routes.draw do
resources :sessions
get :dotnet_login => "sessions#dotnet", :as => "dotnet_login"
# ...
end
然后,您可以在代码中使用URL帮助程序main\u app.dotnet\u login\u path
和main\u app.dotnet\u login\u URL
有关更多详细信息,请访问。不起作用。我收到一条消息说lib/active\u support/whiny\u nil.rb:48:in
method\u missing:undefined method
to\u sym'for nil:NilClass(NoMethodError)尝试将第三行替换为:get'/dotnet\u login'=>“sessions\35; dotnet”,:as=>“dotnet\u login”
效果不错。导航到/dotnet\u login后,我会看到一个页面,上面写着“找不到路径的设计映射”//dotnet\u login”。可能您忘记将路由包装在范围块中了?例如:设计范围:用户确实匹配“/some/route”=>“some\u设计控制器”end我发现我的路由不起作用,因为当应用程序启动时,任何与cms gem中的路由文件冲突的路由都会被覆盖(相反)。现在我得想办法解决这个问题。
Quicksmile::Application.routes.draw do
resources :sessions
get :dotnet_login => "sessions#dotnet", :as => "dotnet_login"
# ...
end