Tag: ujs

重构link_to_function的最佳UJS方式是什么?

我有一个针对我的棒球选秀爱好项目的以下界面,让球队老板建立一套标准来对球员进行排名: 单击属性会将该属性添加到列表中,为其赋予重要性因子和排序方向。 在Rails 2和Rails 3(带有原型助手)中 – 我通过以下方式做到了这一点: “add_ranking_attribute_link(attributename)”的位置是: def add_ranking_attribute_link(attributename) link_to_function attributename do |page| page.insert_html :bottom, :rankingattributes, :partial => ‘ranking_attribute’, :locals => {:attributename => attributename } end end 我将它转换为jquery,但我不确定最好的方法 – 主要是因为涉及的循环。 我可以做这个: ‘attributeappend’, :onclick => “$(‘#rankingattributes’).append(‘#{escape_javascript(render(:partial => ‘ranking_attribute’,:locals => {:attributename => attributename}))}’)”) %> 这基本上只是替换link_to_function。 但有更好的方法吗? ujs的方式会让我这样做: $(“.attributeappend).click(function() { $(‘#rankingattributes’).append(‘#{escape_javascript(render(:partial => ‘ranking_attribute’,:locals => {:attributename => attributename}))}’) […]

rails在ajax响应中发送错误的内容类型

由于以下问题,我一直在为一天中的大部分时间而苦苦挣扎: 我有一个rails 3.1 app – 运行正常 我正在尝试添加一些ajax 但是,无论我尝试什么,Rails都坚持在响应头中发送错误的内容类型。 #the form = form_for @signup, :url => ‘/signup’, :remote => true do |f| = f.text_field :email, :class => ’email’, :size => 26 = f.submit ‘Notify me’ #In the controller def create respond_to do |format| format.js { render :content_type => ‘text/javascript’, :layout => false} end end #the JS […]

用于处理ajax事件的Rails UJS“on”

我在Rails应用程序中使用jQuery方法“on”将事件附加到并不总是存在的表单上。 当#myForm附加到文档时,似乎没有附加事件处理程序。 这是UJS建议使用的on() : $(“#myForm”).on(“ajax:complete”, function(xhr, status) { … } 以下是我通常on()实现jQuery的方法,但这似乎不起作用: $(“body”).on(“ajax:complete”, “#myForm”, function(xhr, status) {…} Rails UJS wiki: https : //github.com/rails/jquery-ujs/wiki/ajax

如何从erb模板调用JavaScript函数?

如果您定义JavaScript函数然后从erb模板调用它,则不会调用该函数。 为什么? 单击此链接应显示警报,但不会显示。 = link_to “Add Sprout”, new_sprout_path, remote: true 控制器: def new @sprout = Sprout.new respond_to { |format| format.js } end 然后在模板中我调用一个函数: # sprouts/new.js.erb doSomething(); 该函数在我的js文件中定义: # javascripts/sprouts.js.coffee doSomething = -> alert “yum ghum I am a new sprout.” JavaScript回来了。 我可以在控制台中看到它。 但我看不到警报。 为什么这不起作用? 我正在使用Rails 4。

Rails不引人注目的javascript(UJS)ajax:在追加数据参数之前

我试图在通过ajax(通过Rails UJS)发送之前将一些参数附加到表单。 $(document).on(“ajax:before”,”.form-example”, function(event) { event.data = $(“:hidden”).serialize(); }); 隐藏的输入不在表单中,因此我需要收集它们,序列化它们,并将它们添加到请求(这是一个PUT请求)。 但是,在上面的例子中,没有参数传递给服务器,我做错了什么? 如何使用隐藏输入的序列化值传递名为”items”参数?

如何修改beforeSend事件中的ajax Post数据?

您好我有一个表单,使用jQuery UJS for rails远程提交。 我绑定到beforeSend事件,允许我修改提交给服务器的数据。 它不起作用。 这是我在beforeSend中的内容: settings.data = JSON.stringify({ ‘list_item[title]’ : ‘hi?? there’ }) 这不起作用。 在服务器日志中,我看到: Started POST “/lists/9/list_items” for 127.0.0.1 at 2011-10-24 14:04:36 -0700 Processing by ListItemsController#create as JSON Parameters: {“{\”list_item”=>{“title”=>{“\”:\”hi?? there\”}”=>nil}}, “list_id”=>”9”} 知道我做错了什么吗? 我想自定义settings.data,添加不在表单中的字段。 谢谢

如何阻止远程表单提交?

我有一个可以远程和正常使用的表单。 = form_for @comment, html: { class: ‘comment-form’ }, remote: request.xhr? do |f| = f.text_area :body = f.submit 我希望表单仅在body textarea具有内容时才提交: $(document).on ‘submit’, ‘.comment-form’, (e) -> text = $(this).find(‘#comment_body’).val() false if text.length < 1 当表单不是Ajax时,该代码有效。 但是当它处于远程状态时,它会失败并且表单仍然会提交。 为什么? 我也尝试过: if text.length < 1 e.preventDefault() false 我正在使用带有Turbolinks的Rails 4。 更新:我尝试绑定ajax:beforeSend事件,它仍然提交: $(document).on ‘page:load’, ‘.comment-form’, -> $(this).bind ‘ajax:beforeSend’, -> alert “hi” […]

Element.update不是函数

我正在尝试将JQuery集成到Rails 3.我已经从http://github.com/rails/jquery-ujs下载了rails.js文件并将其包含在我的应用程序中。 我还包括JQuery。 但是当我尝试做一个简单的page.replace时: render :update do |page| page.replace_html “my_div”, :partial => “my_partial”, :locals => {:mylocal => mylocal} end 我从javascript执行中抛出以下错误: RJS error: TypeError: Element.update is not a function Element.update(“my_div”, “mypartialdata”); 有任何想法吗?

Rails 4:点击后禁用提交按钮

我有一个form_tag(foo_path(@foo), remote: true, id: ‘foo-form’表单和一个提交按钮submit_tag (“Submit”, :id => “foo-submit”) 我想在点击后禁用提交按钮。 显然,我不能使用onlick=”jQuery(this).prop(‘disabled’, true);” 因为它会打破远程function。 我知道:disable_with submit_tag的:disable_with数据属性,但它似乎对我不起作用。 它确实生成了正确的表单代码,但它没有任何效果。 我不确定它为什么不起作用,但可能是因为我同时使用原型(遗留原因)和jquery。 虽然,我只为jquery而不是原型加载ujs 。 但是,所有其他query_ujsfunction都可以正常工作。 还有其他方法可以禁用提交按钮吗?

简单的喜欢/不像带有rails 3,jquery和ajax的按钮

我有一个产品,用户和类似的模型。 用户可以喜欢产品。 我正在尝试实现一个简单的按钮,只需点击一下,就可以让用户喜欢产品。 然后,like按钮转换为不同的按钮,允许用户不同于产品。 很简单。 我已经为上面实现了模型/控制器逻辑。 我对javascript / ajax不是很了解,并且想知道实现上述function的最佳方法是什么。 我希望通过ajax处理like / different动作。 我正在为我的应用程序使用rails 3和jquery ujs。 谢谢。