Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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 呈现路径匹配的同一页_Ruby On Rails - Fatal编程技术网

Ruby on rails 呈现路径匹配的同一页

Ruby on rails 呈现路径匹配的同一页,ruby-on-rails,Ruby On Rails,我正试图通过开发自己的定制CMS来学习RoR(是的,是的…),我想做一件简单的事情,但无法想出一个干净的解决方案 我的路由文件具有以下匹配项: match '/login' => "sessions#new" 它所做的是,一旦击中“http://localhost:3000/login“,允许我登录以创建新会话。它工作得很好 但是,这就是我的会话控制器的外观: class SessionsController < ApplicationController def create

我正试图通过开发自己的定制CMS来学习RoR(是的,是的…),我想做一件简单的事情,但无法想出一个干净的解决方案

我的路由文件具有以下匹配项:

match '/login' => "sessions#new"
它所做的是,一旦击中“http://localhost:3000/login“,允许我登录以创建新会话。它工作得很好

但是,这就是我的会话控制器的外观:

class SessionsController < ApplicationController
  def create    
    @username = params[:session][:username]
    @password = params[:session][:password]
    @rUser = User.find_by_username(params[:session][:username])

  #if user && user.authenticate(params[:session][:password])
    if @rUser && Digest::SHA2.hexdigest(@password) == @rUser.password
      # Sign the user in and redirect to the user's show page.
      redirect_to users_path, :flash => { :notice => "Logged in as #{@username}." }
    else      
      # Create an error message and re-render the signin form.
      redirect_to '/login', :flash => { :error => "Login failed.  Either the username or password was incorrect." }
    end
  end
end
class sessioncontroller{:notice=>“以#{@username}身份登录。”
其他的
#创建错误消息并重新呈现登录表单。
将_重定向到'/login',:flash=>{:error=>“登录失败。用户名或密码不正确。”
结束
结束
结束
如果您查看If-else条件中的“else”语句,您将看到我正在使用redirect_to'/login'在登录失败时显示相同的表单。有没有更好的方法来创建指向“/login”的永久链接,而不必使用字符串,因为如果我决定将来更改URL,我不希望在多个地方进行更改

对不起,如果不清楚的话!请随意要求进一步的代码(不要因为害怕它的可悲而显示出来)

然后您可以在控制器中使用
login\u path

然后您可以在控制器中使用登录路径。

您可以这样做

 match '/login' => "sessions#new", :as => :login    

      #if want to call like localhost:3000/login

 match '/sign_in' => "sessions#new", :as => :sign_in

     #if want to call like localhost:3000/sign_in
你可以这样做

 match '/login' => "sessions#new", :as => :login    

      #if want to call like localhost:3000/login

 match '/sign_in' => "sessions#new", :as => :sign_in

     #if want to call like localhost:3000/sign_in

我知道要接收flash消息,需要使用重定向到(render不能处理flash消息,对吗?),但是如果我想使用“render{call}”,我该怎么做呢。我在浏览路由指南@rubyonrails.org,但找不到简单的解决方案(3.6命名路由),只有在您回答后,我才发现:as=>:blahI知道要接收flash消息,请重定向到需要使用的位置(render不适用于flash消息,对吗?),但如果我想改用“render{call,我是怎么做到的。我在浏览路由指南@rubyonrails.org,但找不到简单的解决方案(3.6命名路由),只有在您回答后,我才发现:as=>:blah