我的Ruby on Rails Web应用程序具有标准身份验证。当用户从索引页登录时,我决定将索引页建模为"user_sessions"资源的"新"操作。
我决定使用 css 隐藏登录表单,以便它可以在 javascript 启动的模式对话框中可见。
现在的问题是,当用户关闭javascript时,我该怎么办?我应该将他们发送到哪里登录?
我考虑过从javascript中隐藏登录表单,所以如果javascript被关闭,表单将保持可见。这样做的问题是,当页面加载时,表单会在消失之前短暂出现。
我不会那样做。构建一个普通的索引页,并链接到登录表单。然后使用 ujs
,将链接设置为 remote
(以便异步管理)并注册其处理程序以在弹出窗口中显示生成的表单。
(in the view)
link_to new_user_session_path, :remote => true, :class => "possibly-modal-dialog"
(in some js or coffee file)
$(document).on "click", "a.possibly-modal-dialog", (event) ->
event.preventDefault
# to whatever needed to show the dialog.
这样,没有javascript的用户将看到普通链接,而使用javascript的用户将只触发模态对话框。
你真的需要关闭JavaScript的用户吗?在主页上为他们发出通知:
<noscript>
<p><font color="red" size="3"><b>Javascript is turned off. <br/>
You need to <a href="/settings">change your browser settings</a>.</b></font>
</noscript>