【问题标题】:How to make the page not redirect in Rails如何使页面在 Rails 中不重定向
【发布时间】:2011-02-04 01:18:45
【问题描述】:

我有一个名为 index 的 erb 文件,其中包含一个表单。举个简单的例子:

<% form_for @foo, :url => {:action => 'bar'} do |f| %>
  <%= f.submit "BAR!" %>
<%end%>

当我单击 BAR 时!按钮它执行我期望的操作并将我转发到 bar.erb 文件,显示预期的输出。但是,我希望能够从该页面获取生成的 html 并将其填充到索引页面上 div 的 innerHTML 中。我认为有办法,但我必须问,有没有办法做到这一点?是否有任何可用的示例会有所帮助?谢谢!

【问题讨论】:

  • 似乎是 ajax 调用的一项好工作......简单的方法是使用 remote_form_for ,而不是在您的控制器中,您可以使用 prototype_helper 在 ajax 响应中执行替换 html。你必须谷歌prototypehelper(或jruby,如果你喜欢jquery)remote_form_for,rjs。
  • 请记住 remote_form_for 不在 Rails 3 中。它已被更清洁的解决方案取代,请参阅 stackoverflow.com/questions/3890315/…

标签: ruby-on-rails


【解决方案1】:

你应该能够像这样传递 div 的 id 来更新:

<% remote_form_for @foo, :url => {:action => 'bar'}, :update => 'id-of-div-to-update' do |f| %>
  <%= f.submit "BAR!" %>
<%end%>

在控制器中:

def bar
  # your code here
  respond_to do |format|
      format.html { redirect_to(xxx) }
      format.js   
    end
end

Rails 将查找名为 bar.js 的模板,并将其渲染并将其内容返回给浏览器,而无需重定向。

【讨论】:

  • 这似乎仍然重定向页面。您所要做的就是添加更新值还是除此之外还有更多?
  • 我编辑了我的答案以包含处理 js 请求的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 2023-04-10
  • 2018-10-24
相关资源
最近更新 更多