Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅当某些条件为真时才执行js.erb_Javascript_Jquery_Ruby On Rails_Ajax_Coffeescript - Fatal编程技术网

Javascript 仅当某些条件为真时才执行js.erb

Javascript 仅当某些条件为真时才执行js.erb,javascript,jquery,ruby-on-rails,ajax,coffeescript,Javascript,Jquery,Ruby On Rails,Ajax,Coffeescript,我对cofeescript或js不是很有信心,所以我有点困惑。我有一个快速编辑功能,可以发送AJAX请求并更新数据库。目前,我正在手动更改编辑的位置并显示它,但它看起来像是一个骗局,徽章不会更新!我想重新呈现我的特定帖子。我给了我的一个数据id属性,这样我就可以通过post.find($(#li).data('id'))获取我的帖子了。(不太确定它是否有效,但应该有一种传递变量的方法。现在主要的问题是我的帖子/index.js.erb上还有其他我不想执行的脚本。我只希望在AJAX成功(在另一个文

我对cofeescript或js不是很有信心,所以我有点困惑。我有一个快速编辑功能,可以发送AJAX请求并更新数据库。目前,我正在手动更改编辑的位置并显示它,但它看起来像是一个骗局,徽章不会更新!我想重新呈现我的特定帖子。我给了我的
  • 一个
    数据id
    属性,这样我就可以通过
    post.find($(#li).data('id'))获取我的帖子了。
    (不太确定它是否有效,但应该有一种传递变量的方法。现在主要的问题是我的帖子/index.js.erb上还有其他我不想执行的脚本。我只希望在AJAX成功(在另一个文件中)或
    $(“#form”中)后执行与此相关的部分。).submit
    。现在我不知道如何实现这一点!这听起来像是一个简单的问题,但我对如何使用所有其他脚本和限制这些脚本的一部分缺乏知识


    编辑关于如何从另一个coffeescript或js文件调用my index.js.erb?或发送参数并在该文件中使用它们的任何建议?

    如果此Ajax是在onchange事件上执行的,那么您将传递一个值,稍后可以对.js.erb文件进行评估。例如:

    假设事件发生在文本\字段\标记的一次更改上

    <%= text_field_tag(:for_event, "", :onchange=> "TheAjax('identifier')") %>
    
    您的js.erb文件

    <% case @my_identifier %>
       <% when 'identifier' %>
          Here you put whatever part of your JS you want to execute ONLY when the condition is met.
       <% else %>
          Whatever else you want to execute when the previous conditions are not met
    <% end %>
    
    
    在这里,您将只在满足条件时才执行JS的任何部分。
    当前面的条件不满足时,您希望执行的任何其他操作
    

    还请记住,如果您想处理数据库更新,您还可以在控制器中执行“案例”,并在满足条件时管理数据库更改。

    是,它在('change')上执行检查我修改过的答案谢谢,伙计,我在看这里之前确实做了这个,但答案很棒。它比我做的更完整、更整洁。
    def show
     @my_identifier = params[:the_id] (session var so you'd access it on your js.erb file)
    end
    
    <% case @my_identifier %>
       <% when 'identifier' %>
          Here you put whatever part of your JS you want to execute ONLY when the condition is met.
       <% else %>
          Whatever else you want to execute when the previous conditions are not met
    <% end %>