Tag: ujs

Rails 3 UJS干客户端+服务器端表单validation

使用jQuery进行表单validation就像向字段添加类名一样简单。 使用rails进行表单validation就像将条件放入控制器(和/或模型)一样简单。 我认为应该有一种方法来编写validation一次,并将它们应用于客户端和服务器端。 我一直都是编写自己的javascript的粉丝,但是如果可以实现这一点,那么使用rails3不引人注目的UJS可能非常值得。 谢谢!!

Rails,CoffeeScript和ERB

所以我在几个javascript响应者面前搞乱一些动作。 所以,例如, def create #code omitted respond_to do |format| if @post.save format.html { redirect_to discussion_posts_path(@post.discussion), notice: ‘Post was successfully created.’ } format.js else format.html { render :action => “new” } end end end #create.js.erb $(“#discussion_posts_table”).append(“”); $(“#post_body”).val(“”); 现在让我说我想将这些javascript函数转换为Coffeescript(撇开它几乎没有任何收获的事实),如果我将文件更改为create.js.coffee.erb它就会停止工作。 在UJS中使用coffeescript的正确方法是什么? 为了记录,我在我的Gemfile中有coffee-rails ,并在资产管道中使用coffeescript。

Rails:无法提交通过Ajax加载的远程表单

目标 我有一个包含Rails后端的项目列表的页面。 我希望能够通过Rails UJS使用Ajax调用来编辑该列表中的行。 途径 我在每行的末尾添加了一个编辑按钮。 编辑按钮是link_to … :remote => true 。 单击它会再次加载列表,但所选行将处于编辑模式。 可编辑行嵌入在form … :remote => true 。 该行中的保存按钮是一个submit按钮。 index.html.haml #editor %table – @items.each do |item| %tr = render :partial => ‘row’, :locals => { :item => item } _row.html.haml … %td // a number of columns with attributes … %td = link_to t(“actions.edit”), […]

jquery-rails打破kaminari?

我更新了我的Rails 3.0.7应用程序,使用kaminari 0.12.4(从0.10.4起)用于分页和jquery-rails 1.0.9,它似乎打破了分页。 我已经重新生成了kaminari视图,因为它们不同但是由于某种原因ajax不起作用。 已经包括了。 哪个在浏览器中产生这个: 在我看来,我有: true%> 这会产生以下错误: ActionView :: MissingTemplate(缺少模板用户/显示{:handlers => [:erb,:rjs,:builder,:rhtml,:rxml],:formats => [:js,“application / ecmascript”,“application / x-ecmascript“,” / “],:locale => [:en,:en]}在视图路径”/ home / epipheus / CodeWarehouse / praypeer / app / views“,”/ home / epipheus / .rvm / gems /ruby-1.9.2-p0@rails3tutorial/gems/kaminari-0.12.4/app/views“): 以下非ajax版本当然可以正常工作: false %> 所以我觉得jquery ujs有问题吗? 请帮我。

Turbolinks导致与href =“#”的链接以触发页面刷新

我的页面上有一个非常简单的链接。 My link 。 它会导致页面刷新。 当我删除“turbolinks”时,它不再导致刷新。 我过去一直使用带有哈希片段的链接。 除非我很长时间遗漏了一些非常基本的东西,否则我不明白这是如何导致刷新的。 它没有附加任何JS事件处理程序。 有任何想法吗? 这可能无关紧要,但我使用的是jQuery,Twitter-Bootstrap和Ruby on Rails。 到目前为止的线索: 当我删除Turbolinks时,链接行为正常(不会导致页面刷新)。 链接“#”作为URL导致我的应用程序的每个页面上的重新加载。 与任何“#hasfragmenttext”的链接将导致单次刷新,然后页面的URL为“mypage#ha​​sfragmenttext”,任何额外的点击都不会导致页面刷新…嗯。

Rails 3 UJS驱动程序事件

根据Simone Carletti 博客文章 ,Rails 3 ajax助手已经改变了很多。 我们应该使用rails 3编写比使用rails 2更多的javascript。 我试图找出如何显示ajax加载gif-而ajax查询正在运行 – 在“rails 3 way”中。 我想出了这种代码,它使用Rails 3 UJS驱动程序发送的javascript事件。 此示例使用原型: Please wait… “mylink”, :remote => true %> Event.observe(‘mylink’, ‘ajax:before’, function(event) { $(‘wait’).show(); }); Event.observe(‘mylink’, ‘ajax:complete’, function(event) { $(‘wait’).hide(); }); 这很好用,但我希望有可能在原型和scriptaculous助手的帮助下编写这些ajax事件“触发器”,就像我们使用link_to_function一样: 有没有办法做到这一点,或者我们应该直接在javascript中编写ajax事件“触发器”,无论是原型还是jquery? 最好的祝福, Philippe Lang

Rails form_for with file_field and remote => true and format =>:js

我正在提交一个带有file_field的form_for。 当表单与post一起提交时,控制器以.js文件响应,该文件将被执行。 file_field是可选的。 当我上传文件时,js文件在新文档中打开(作为简单的文本文件),并且不执行js。 当我不上传任何文件时,响应div将更新。 我希望在响应div中通知更新成功或者独立于文件上载的失败消息。 可能出于某些安全原因这样做了吗? 想要能够做到这一点的人有一些解决方法吗? 大致, 表单部分_action.html.erb: true, :url => {…, :format => :js} do |f| %> … 控制器::行动 if not request.post? render :partial => ‘controller/action’ return else @response = “save was successful”; # renders the action.js.erb end action.js.erb: $(“#response”).html(“”);

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文件中

Rails控制器 – 仅当Rails UJS方法内部成功时才执行操作(相互依赖的方法)

接下来的另一个问题( Rails控制器 – 仅当内部两个方法成功时才执行操作(相互依赖的方法) ),我想确保在我的控制器的一个操作中,如果用户没有看到Rails UJS方法显示的消息,那么控制器动作的第一种方法也没有实现。 CONTEXT 我有一个控制器,其方法称为“动作”。 当应用程序进入方法’example_action’时,它实现第一个方法(1)update_user_table,然后(2)另一个update_userdeal_table。 (两者都将读写数据库),然后(3)第三种与Rails UJS(ajax)调用相关的方法。 我的问题如下:如果在控制器中间超时,我想避免更新User表(通过方法1),更新UserDeal表(通过方法2)但不更新thrid方法的情况即ajax请求显示消息FAILS(错误,超时,……状态如500或404或取消或超时……)。 在我的应用程序中,对于移动用户,如果他们在有地铁连接的地铁中,他们启动通过’example_action’控制器的请求,成功执行第一种方法(1)和第二种方法(2)但他们进入隧道非常低(<5b /秒)或无互联网连接60秒,因此出于用户体验原因,我超时请求并向用户显示'抱歉花了太长时间,再试一次'。 问题是,如果我无法向他们显示结果(3),我需要能够不执行(1)和(2)。 我需要两个方法(1)和(2)和(3)“相互依赖”:如果一个不成功,则不应该执行另一个。 这是我描述它的最佳方式。 今天这是我的代码。 它没有工作,因为我通过点击手动测试,然后在2秒后我断开了互联网连接。 我在我的数据库中看到(1)和(2)已执行并且数据库已更新,但我看到了“抱歉花了太长时间,再试一次”的消息。 这是正确的方法吗? 如果是的话怎么做? 如果没有,我应该尝试不同的角度:如果(1)和(2)成功但不是(3)我应该存储轨道UJS xhr状态是错误或超时的事实,因此模态wxas没有有效显示一旦他们重新上线,向用户显示结果/消息? 这是代码 用户的html页面,用户点击触发Rails UJS aajax请求的按钮,该请求最终将显示模态消息 这将发送到指向此控制器操作的路由 交易控制器 class DealsController < ApplicationController def deal_modal Deal.transaction do update_user_table # that's the (1) update_userdeal_table # that's the (2) # show_modal_message respond_to do |format| format.js end […]