如下所示,我在Rails 3.1应用程序中尝试使用link_to使用块进行POST:

views / wall / _problem.html.erb

<li data-icon="check">
<%= link_to(
  url_for(
    :controller => 'completed_problems',
    :action => 'create',
    :problem_id => "#{problem.id}"),
  {:class => "wall_problem",
  :confirm => "Climbed it?",
  :remote => true,
  :"data-type" => "json",
  :method => "POST"}) do %>
<div>stuff</div>
<% end %>
</li>

views / wall / show.html.erb

<% content_for :content do %>
  <div data-role="content">
  <ul data-role="listview">
    <%= render :partial => 'problem', :collection => @wall.live_problems.sort %>
  </ul>
<% end %>

<script>
  $('.wall_problem').live('ajax:success', function() {
    alert("Success!");
  });
</script>

该特定的POST针对以下控制器操作:

控制器/completed_problems_controller.rb

class CompletedProblemsController < ApplicationController
  # POST /completed_problems
  def create
    @problem = Problem.find(params[:problem_id]
    @completed_problem = @problem.completed_problems.build
    if @completed_problem.save
      render :json => { }
    else
      render :json => { :location => root_url}
    end
  end
end

从下面的日志中可以看到,POST确实可以成功完成,但是由于某种原因,该应用程序同时对完全相同的URL执行GET。

日志

Started POST "/completed_problems?problem_id=11" for 127.0.0.1 at 2011-12-11 13:13:06 -0500
  Processing by CompletedProblemsController#create as JSON
  Parameters: {"problem_id"=>"11"}
  # SQL stuff snipped from here
Completed 200 OK in 116ms (Views: 3.0ms | ActiveRecord: 2.6ms)

Started GET "/completed_problems?problem_id=11" for 127.0.0.1 at 2011-12-11 13:13:06 -0500
  Processing by CompletedProblemsController#index as HTML
  Parameters: {"problem_id"=>"11"}
Rendered completed_problems/index.html.erb within layouts/application (29.6ms)
Completed 500 Internal Server Error in 36ms

这个问题听起来与jQuery ajax POST的范围类似,但会导致立即GET到相同的URL,但这使用的是jquery_ujs,我不相信自己会留下任何自定义的jQuery代码。 因此,我无法执行添加“ return false”的问题中建议的解决方案;

我怀疑问题出在以下三个位置之一:

  1. 我在使用link_to元素和块时语法不正确
  2. 我在控制器中对请求的处理不正确
  3. 我以某种方式使我的jquery_ujs翻了一番(我确实认为这不是真的,但是可能在这里)

编辑

缩小问题#1:

我将脚本更改为以下内容,

<script>
  $('.wall_problem').live('ajax:beforeSend', function() {
    return false;
  });
</script>

并发现POST现在没有通过,但是GET完成了,这确认了问题似乎是AJAX处理程序正在拾取链接并将其正确提交为POST,但没有拦截浏览器提交的GET。

缩小问题2:

一开始我没有提到它,但是我正在使用Jquery-mobile。 现在,在将script标记恢复为其以前的形式,然后禁用jquery-mobile时,我再次尝试了该链接,现在它不提交GET而是提交POST。 这使我相信jquery-ujs和jquery mobile如何与链接进行交互存在一些问题。

===============>>#1 票数:0 已采纳

根据上面编辑中包含的信息,我继续测试Jquery Mobile并能够解决。

首先,我更新到Jquery Mobile v1.0,它添加了linkBindingEnabled全局配置(http://jquerymobile.com/demos/1.0/docs/api/globalconfig.html):

其次,我将该配置设置为False:

$(document).bind("mobileinit", function(){
  $.mobile.linkBindingEnabled = false;
});

  ask by IanWhalen translate from so

未解决问题?本站智能推荐:

1回复

使用AJAX更新Rails模型

我才刚刚开始学习AJAX。 我当前的ajax函数似乎没有任何作用。 这是我的coffeescript文件中的函数: “ Aulas”是一个将“ Student”表和“ Seminar”表连接在一起的模型(我使用了“ Seminar”一词,因为我想避免使用“ Class”一词)。
1回复

将空行添加到基于Ajax的选择框

我有一组使用一些Ajax魔术填充的选择框。 Ajax使用正确的数据加载选择框,但是在组合框顶部添加空白行时遇到了麻烦。 由于该集合没有空白,因此选择框也没有。 这是我控制器的更新部分: 这是通过更新呈现的内容: 这是选择框的部分之一(它们三个基本相同) 这是部分
2回复

如何从Rails的每个帖子中获取最新评论?

我有一个标准的博客模型,用户,帖子和评论。 如何查询自定义用户每条帖子的1条最新评论? 我知道我们可以通过帖子将用户与评论联系起来,但这并不能使我知道如何提供帮助。 数据库结构
1回复

Rails:排序关联包括而不发出新查询

人has_many: :blogs has_many: :articles 博客has_one: :person 问题: person.<blogs and articles>.<order by last_updated>.last 我知道我可以
1回复

在Rails中将回形针URL添加到JSON

请参考以下问题: 同一问题或其他相似问题 我似乎无法让我的work支架包含从回形针到JSON的图像URL。 我需要此url对dom进行一些Ajax操作。 据我了解,您在模型中添加了def,然后在控制器中的format.json中添加了额外的一行。 当我在控制器方法def cr
1回复

Rails如何修复表格以获取任何URL

在我的Records index.html.erb中,我有一个表,这些表的标题被链接在一起,以便该表可以自己排序: 该sortable方法引用了我的应用程序中的一个助手: 这两个的最终产品是HTML页面上的以下代码: 向右移动... 因此,如果我转到: http:/
2回复

使用Carrierwave在Ajax请求中的照片URL

我有一个通过ajax请求的API。 该查询返回一个集合,该集合在渲染回客户端之前已序列化为json。 每条记录都由Carrierwave分配了照片网址。 没什么特别的。 在Rails控制台中,我将每张照片的完整完整公共URL传递到Google云存储,但是,在响应(客户端)中,从对象数
1回复

Rails - 在帖子的索引页面上执行操作

我有一个模型“产品”(它是父模型“Assortments”的子模型),用户可以喜欢它。 现在,你只能喜欢产品展示页面上的产品,因为我能够找到产品ID,这是我需要喜欢的 我也希望用户能够在产品索引页面上喜欢该产品。 例如,如果你去Pinterest,你可以在他们的流体网格布局页面以及每
1回复

使用相同表(多对多)Ruby on Rails的多个关联

我试图找出完成关系和遇到麻烦的最佳方法。 我遇到过一些文章,这些文章有点解决了我想要做的事情,但并不完全。 我有一个用户模型和一个Tickets模型。 两者都通过UserTickets模型连接,因此我可以将多个用户分配给故障单。 我想要做的是将分配给故障单的用户分段为请求者和代理。
3回复

具有相同模型的Ruby on Rails 4的多态关联

因此,我有一个应用程序,用户可以在其中创建汽车。 他们也可以喜欢汽车,而我想两者之间建立联系。 他们创造的汽车属于他们,而喜欢的汽车则通过喜欢它们的上下文属于他们。 为此,我建立了如下关联: 用户协会: 汽车协会: 像协会: 问题是,在我让用户has_many