首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每个页面上的登录表单或重定向到页面的窗体。

每个页面上的登录表单或重定向到页面的窗体。
EN

Stack Overflow用户
提问于 2014-02-06 01:10:11
回答 1查看 148关注 0票数 3

在我的rails应用程序中,有很多页面不需要您登录查看。例如,某个用户的配置文件页。如果需要您登录当前会话逻辑,则重定向回上一页。但是,如果没有,比如配置文件页面,然后单击“登录”和“登录”,它只会带您访问在我的SessionsController操作中指定的url。这让我走到了十字路口。要么我需要在每个页面(在layouts/application.html.erb中)上有会话表单的模式,这样用户就可以点击“登录”,模型就会打开,当他们登录的时候会刷新页面,这样用户就可以停留在当前的页面上了。然而,我现在正在尝试,并得到了一些错误。另一个选择是拥有个人登录页面,但无论您来自应用程序中的哪个页面,它都会将您重定向回。不幸的是,我不知道如何编写这方面的代码。

下面是我目前使用的代码,我试图通过一个模式在每个页面上使用会话表单。

代码语言:javascript
复制
**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"

但是,当我在其他页面上使用此表单时,会得到以下错误:

代码语言:javascript
复制
`Missing template public/error with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. `

这一页的内容是:

代码语言:javascript
复制
http://localhost:3000/sessions

我怎样才能使这个会话形式在网站的每一页上工作??谢谢

更新

在更多地使用它之后,我意识到当我将SessionController中的代码更改为

代码语言:javascript
复制
redirect_back_or profile_path(user)

而不是电流

代码语言:javascript
复制
redirect_back_or request.original_url

如何重定向回我所处的当前页面,而不是指定像配置文件页面这样的特定页面?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-06 01:20:31

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

代码语言:javascript
复制
redirect_back_or :back
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21592072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档