Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将新页面操作添加到Refinery中的会话脚手架_Ruby On Rails_Refinerycms - Fatal编程技术网

Ruby on rails 将新页面操作添加到Refinery中的会话脚手架

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

我正在构建一个精炼厂cms应用程序,并尝试添加一个替代的登录屏幕,该屏幕将使用.NET Web服务。然而,虽然使用该服务的代码非常简单,但我似乎无法让rails或refinery确认该服务的视图确实存在,因此我在url中输入的任何路径都不会将我带到备用登录的视图,我也不明白为什么。my view的文件位于/views/sessions/dotnet.html.erb,当前my sessions\u controller.rb包含该方法的定义

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