gpt4 book ai didi

ruby-on-rails - 每个页面上的登录表单或重定向到页面的表单

转载 作者:行者123 更新时间:2023-12-02 04:56:24 26 4
gpt4 key购买 nike

在我的 Rails 应用程序中,有很多页面不需要您登录即可查看。例如,某个用户的个人资料页面。如果该页面要求您登录,我当前的 session 逻辑将重定向回上一页。如果没有,就像个人资料页面一样,您单击登录并登录,它只会带您到指定的 url我的 SessionsController Action 。这把我带到了一个十字路口。要么我需要在具有 session 表单的每个页面(在 layouts/application.html.erb 中)上都有一个模态,以便用户可以单击“登录”,模型将打开,当他们登录时几乎刷新页面,以便用户可以停留在当前页面上。但是,我现在正在尝试并遇到一些错误。另一种选择是拥有单独的登录页面,但无论您来自应用程序中的哪个页面,它都会将您重定向回。不幸的是,我不确定如何为此编写代码。

这是我目前尝试通过模态在每个页面上设置 session 表单的代码。

**SessionsController #create action**

def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_back_or request.original_url
else
flash.now[:error] = "Invalid email/password combination."
render 'new'
end
end

**layouts/application.html.erb**

<% unless signed_in? %>
...modal code
<%= form_for(:session, url: sessions_path) %>
<%= text_field ... %>
<%= password_field .... %>
<%= submit button %>
<% end %>
... # I've shorted the code here obviously
<% end %>

此表单在 /login 页面上运行良好:match '/login', to: "sessions#new", via: "get"

但是,当我在其他页面上使用此表单时,出现此错误:

`Missing template public/error with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. `

然后转到此页面:

http://localhost:3000/sessions

我怎样才能让这个 Sessions 表单在站点的每个页面上工作?谢谢

更新

经过更多尝试后,我意识到当我将 SessionController 中的代码更改为

redirect_back_or profile_path(user)

代替当前

redirect_back_or request.original_url

如何重定向回我所在的当前页面,而不是像个人资料页面那样指定特定页面???

最佳答案

我想我找到了答案。如果您有更好的解决方案,请继续回答。

redirect_back_or :back

关于ruby-on-rails - 每个页面上的登录表单或重定向到页面的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21592072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com