如何使Rails呈现视图并自动向下滚动?

ice*_*eam 8 ruby-on-rails

我有一个令人讨厌的大型登陆页面,中间有一个注册表格.如果我提交表单并且验证失败,我想再次渲染着陆页,但我希望将其向下滚动到注册表单,以便他们可以看到错误并进行编辑.是否可以使用该render方法跳转到表单,或者我需要做 redirect_to "account/new#theFormID"什么?

我宁愿不做重定向,因为你必须在会话中保存表单信息,重新填充表单,等等,我想坚持常规

if @resource.save then redirect_to ...
else render "new"
end
Run Code Online (Sandbox Code Playgroud)

小智 27

将锚指令放在表单上,​​您仍然可以依赖:从控制器渲染...

form_for(@my_model, :url => { :action => "create" , :anchor => "my_anchor" })
Run Code Online (Sandbox Code Playgroud)

  • 伙计,为什么人们投票给你了!那段甜蜜的知识让我的小黑暗的房间充满了几分钟!我有野心拥有一个应用程序,即使没有JavaScript,大多数功能都在工作,这是非常华丽的选择!很多,我会高兴地使用它:`form_for(@reply,:url => create_reply_post_comment_path(@ post,@ comment,:anchor =>"reply_comment _#{@ comment.id}") (3认同)
  • +1,如此简洁和简单我嫉妒我没有想到它 (2认同)

the*_*gah 5

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html

redirect_to profile_path(@profile, :anchor => "wall")
Run Code Online (Sandbox Code Playgroud)

这就是你通过锚点的方式。

  • 这被标记为答案,但显然不是。@another-sam 正确回答了这个问题:在控制器中使用 `render` 而不是 `redirect`。另外,请参阅此处的欺骗:http://stackoverflow.com/questions/2068887/rails-render-action-to-target-anchor-tag (3认同)