ruby-on-rails - Rails Flash中的link_to()

标签 ruby-on-rails erb flash-message

当用户在我的Rails应用程序上登录失败时,我想将他们指向密码重置页面:

flash[:notice] = "Login failed.  If you have forgotten your password, you can #{link_to('reset it', reset_path)}"

但是,我不能在 Controller 中使用link_to。没有混合 Controller 和 View 逻辑的最佳方法是什么?

我最好的猜测是闪光灯是执行此操作的错误位置,但是我很感谢您的投入。

最佳答案

我认为最常见的解决方案是在登录表单中直接添加一个指向密码重置页面的链接,因此您的Flash消息根本不需要处理。这也使用户可以在不首先登录的情况下请求重设。

如果要在即时消息中执行此操作,则应使用url_for而不是link_to来构建链接。

或者,您可以呈现部分消息,而不是在 Controller 中对消息进行硬编码。

flash[:error] = render_to_string(:partial => "shared/login_failed_message")

# in shared/_login_failed_message.html.erb
<%= "Login failed.  If you have forgotten your password, you can #{link_to('reset it', reset_path)}" %>

关于ruby-on-rails - Rails Flash中的link_to(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1598150/

相关文章:

ruby-on-rails - Rails 5 API Controller 中未定义的实例方法 "respond_to"

ruby - 从命令行向 ERB 传递绑定(bind)或参数

ruby-on-rails - Flash 消息未显示在 Rails 中

javascript - 如何让 connect-flash 返回多条消息或带有换行符的一条消息?

javascript - Twitter Bootstrap 粘性子导航在它应该在较短的页面上之前变得固定

mysql - 需要帮助解析 mbox 文件并将某些属性存储到 MySQL 数据库中吗?

javascript - 如何在Rails中仅渲染js而不渲染html(模板,布局)

laravel - Laravel 5 中的 Flash 数据

javascript - 为什么 Rails 的 Assets 缓存在暂存环境中不适用于 JS?

html - float : left and right inline without width 之间的 CSS 中心