Tag: ajax

ajax:success和ajax:在Rails中使用UJS时,完全回调不起作用

我有一个链接,当我点击它将触发ajax调用然后用另一个链接替换此链接,例如说原始链接是“添加朋友”,当我点击此链接它将发送ajax请求add_friend行动然后如果添加好友,上面的链接将被另一个链接“取消请求”替换,我使用ujs: $(“#link_for_friend”).html(“”) 当我尝试添加回调(:成功和:完成)时,它不起作用,我尝试使用:beforeSend,如下所示: $(document).ready -> $(“#my_link”).on “ajax:beforeSend”, -> alert(“hello”) 有成功和完全回调的解决方案吗? 注意:我的想法是在ajaxStart被触发时显示loader.gif然后在ajax:至少触发完全回调时隐藏它,如果有一些错误我想在ajax:error被触发时显示它 更新 我试图通过将action.js.erb中的代码移动到js文件来解决这个问题,如下所示: $(document).ready -> $(document).on(“ajax:success”, “a.invitation-box”, -> $(“#link_for_friend”).html(“”) ).on “ajax:error”, “a.invitation-box”, -> alert “error” 但这样就不可能将render(’users / cancel_link’)放在JS文件中

pushState with Rails ajax

我有一个索引操作页面,显示了与Kaminari一起分页的项目列表,我已经为他们添加了ajaxfunction,现在我试图通过使用pushState来获取适合的URL。 我的问题是当我的分页链接通过以下方式完成时,如何将URL传递给pushState方法: 和javascript视图如下: $(‘.grid’).html(”); $(‘.pagination’).html(”); 我需要以某种方式获取URL作为我读过的pushstate的第三个参数传递? 更新: 我已将其更改为以下内容: $(document).ready(function() { $(document).on(‘click’, ‘.pagination a[data-remote=true]’, function(e) { history.pushState({}, ”, $(this).attr(‘href’)); }); $(window).on(‘popstate’, function () { $(‘.grid’).html(”); $(‘.pagination’).html(”); }); }); $(‘.grid’).html(”); $(‘.pagination’).html(”); 所以我认为我的代码现在通过捕获我自己的分页远程真实链接上的点击来绕过rails jQuery UJS,并且URL有点工作。 似乎URL有时会更新。 后退按钮也失败了。 我出错的任何想法? 更新2: 我将一大堆javascript移动到我的主页javascript而不是javascript视图: $(document).on(‘click’, ‘.pagination a[data-remote=true]’, function(e) { history.pushState(null, ”, $(this).attr(‘href’)); }); $(window).on(‘popstate’, function () { console.log(‘popState started’); $(‘.grid’).html(”); $(‘.pagination’).html(”); }); […]

Ajax队列Backbone js

我在Rails 3.2.2上运行Backbone js 0.9.2,我有一个页面用于添加成本行。一个成本有3个TextFields:标题,描述和价格。 我节省了模糊的每个成本。 model.save()以非常短的间隔多次调用。 哪个问题create(post)请求然后在那之后不久create(post)一个update(put)请求。 我遇到的问题是PUT请求有时会在POST之前到达服务器,结果是模型被创建并持久两次(重复)。 为了节省模糊是请求的行为,所以我需要一种方法来排队请求。 我已经读过关于Spine js的东西,并且他们通过某种队列来解决它。 我也看过这个 ,但似乎无法弄清楚这一点。 感觉这应该是一个常见的问题,使用“单页应用程序”但无法找到任何相关信息。

如何使用rails中的link_to_remote调用文件下载?

我希望能够使用link to remote从rails调用文件下载。 我的链接工作正常,它看起来像这样: link_to_remote image_tag(“icons/ppt_48.png”), :url => formatted_element_path(@element, :ppt), :method => :get, :with => “‘stoplight=’ + $F(‘stoplight’)” 响应包含正确的文件,但响应进入时不会出现下载对话框。有没有办法调用下载对话框? 我需要这个在IE和Firefox中工作 谢谢, -C

Rails – 更新div与Ajax和:remote => true

我已经按照这个Railscast通过Ajax提交表单并更新div而不重新加载页面,但我遇到了一部分问题。 Ryan有$(“#products”).html(“”); 在index.js.erb文件中,在提交表单时更新#products div。 我很难理解像@products这样的实例变量是否与我的情况相关,或者我是否可以简单地将其替换为URL。 我试图在这个截屏video中做与Ryan相同的事情,但是我只想显示更新的值而不是显示搜索结果。 在show.html.erb我有: false).each do |todo|%> true, :”data-replace” => “#dueon” do |f| %> “primary”, :value => “Add” %> todo %> 部分_duedate.html.erb有一行: 所以在我的index.js.erb中,我目前有这个: $(“#dueon”).html(“”); 但它显然不起作用。 我是否必须在此处使用变量代替_duedate ? 如果是这样,我将如何在控制器中设置它? 我的意思是变量代表了什么? 此外,对于它的价值,部分正确呈现并显示todo.due值…当我提交表单时它不会更新。 ProjectsController: def show @project = Project.find(params[:id]) # Display the form to create a new todo @project_todo = ProjectTodo.new respond_to do |format| format.html […]

Rails和Ajax:通过选择的filter显示产品

我需要使用Ajax按选定的类别显示产品; 如果用户未选择类别,则显示所有产品。 如果用户选择了一个或两个类别,则只应显示属于这些类别的产品。 例: 我的模型产品,类别和连接表cause_products 类别 class Category < ActiveRecord::Base has_and_belongs_to_many :products end 制品 class Product < ActiveRecord::Base has_and_belongs_to_many :categories end 我正在寻找一个教程,我找到了“Rails 4:” 如何分段和AJAX,很容易 “。我遵循了这个教程,但我得到了一个错误。我觉得我错过了一些东西。 您能否就此提出建议或参考有用的资料来源。 谢谢! 产品控制器: class ProductsController params[:cat_id]) respond_to do |format| format.js end end end 产品/ index.html.erb: 产品/ _sidebar_menu cat.id), :remote => true %> 的routes.rb get “/fetch_products” => ‘products#from_category’, as: ‘fetch_products’ 产品/ […]

ActionController :: UnknownFormat with format.js for ajax implementation(Rail 4)

我尝试在Rails 4的应用程序中使用Ajax。要将我的js发送到客户端,我使用: respond_to do |format| format.js end 在我的控制器中。 但是我的控制器产生了错误“ActionController :: UnknownFormat”。 有人可以帮帮我吗? main_controller.rb: class Oweb::MainController < ApplicationController def index ….. end def setmagasinstatus begin @mag = Magasin.find(params[:id]) if @mag.etatmagasin.lib == 'Ouvert' @mag.etatmagasin = Etatmagasin.where(lib: 'Fermé').first else @mag.etatmagasin = Etatmagasin.where(lib: 'Ouvert').first end rescue ActiveRecord::RecordNotFound logger.error("Attempt to access invalid Magasin #{params[:id]}") redirect_to_index("Invalid Magasin") else @mag.save @mags = […]

如何将包含’include’关联的记录转换为JSON

如果我这样做: result = Appointment.find( :all, :include => :staff ) logger.debug { result.inspect } 然后它只打印出约会数据,而不是相关的人员数据。 如果我做结果[0] .staff.inpsect那么我当然得到了员工数据。 问题是我想将此作为JSON返回给AJAX,包括人员行。 如何强制它包含人员行,还是我必须循环并手动创建内容?

Paperclip和xhr.sendAsBinary

我使用paperclip将文件添加到我的模型中。 我想使用firefox 3.6的新functionxhr.sendAsBinary来发送带有ajax请求的文件。 以下是我构建请求的方式: var xhr = new XMLHttpRequest(); xhr.open(“POST”, “/photos?authenticity_token=” + token + “&photo[name]=” + img.name + “&photo[size]=” + img.size); xhr.overrideMimeType(‘text/plain; charset=x-user-defined-binary’); xhr.sendAsBinary(bin); name和size保存在我的模型中没有问题,但文件本身不会被回形针捕获。 我的模特 class Photo { :medium => “300×300>”, :thumb => “100×100>” } end 迁移 def self.up add_column :photos, :photo_file_name, :string add_column :photos, :photo_content_type, :string add_column :photos, :photo_file_size, :integer add_column :photos, :photo_updated_at, […]

Rails:使用控制器呈现js.erb模板

我有一个rails应用程序尝试合并一些AJAX,其中点击新打开一个模态窗口和一个表单。 我希望能够显示validation错误,如果它失败,那么在我的创建操作中,我想重新渲染new.js.erb文件。 这是正确的方法吗? def create @place = Place.new(params[:place]) if @place.save redirect_to places_path, :notice => “Successfully created place” else render “new.js.erb” end end 我得到的结果是在我的浏览器中转义js文本,如: $(“#new_grouping”).html(“\n ×\n Create a new menu section\n\n 我已经尝试将各种选项放入渲染块但没有运气。 有小费吗?