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