Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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
Jquery Rails:remote=>;是否对文档对象执行true操作?_Jquery_Ruby On Rails - Fatal编程技术网

Jquery Rails:remote=>;是否对文档对象执行true操作?

Jquery Rails:remote=>;是否对文档对象执行true操作?,jquery,ruby-on-rails,Jquery,Ruby On Rails,我有以下index.js.erb: $(function () { var $team = $('#createTeam'), $user = $('#createUser'), $userPanel = $('.createUserPanel'), $teamPanel = $('.createTeamPanel'); $user.click(function(){ $userPanel.append('<%= j render 'f

我有以下
index.js.erb

$(function () {
  var $team = $('#createTeam'),
      $user = $('#createUser'),
      $userPanel = $('.createUserPanel'),
      $teamPanel = $('.createTeamPanel');

  $user.click(function(){
    $userPanel.append('<%= j render 'form_user' %>').fadeIn('slow');
    $(this).fadeOut();
  });

  $team.click(function(){
    $teamPanel.append('<%= j render 'form_team' %>').fadeIn('slow');
    $(this).fadeOut();
  });
})();
<%= link_to "+", "#", 'data-action' =>"create",'data-target'=> "team", id: "createTeam", remote: true %>

<%= link_to "+", "#", 'data-action' =>"create",'data-target'=> "user", id: "createUser", remote: true %>
当我第一次点击任何一个链接时,什么都没有发生,但是在连续的第二次和第三次点击时,两个表单都会出现。每次单击链接后,按钮应淡出,表单应显示在单独的div中


所需的实现是当单击任一链接时,将出现
表单*
,按钮将淡出。如何实现这一点?

因此,这里发生的事情如下所示:

单击向#索引控制器操作发送请求的链接之一。这将返回index.js.erb

第一次返回时,什么都没有发生,因为JS刚刚加载,所以就JS而言,什么都没有发生。您需要在
index.js.erb
中添加一些内容,以便在最初加载js时调用append操作


对于同时出现的两种形式,您可能需要更具体地说明要附加到哪些内容。调用append时,您似乎选择了这两个类。也许您可以在问题中包含更多的
index.html.erb

问题在于您正在调用javascript,然后加载javascript并将事件绑定到元素。这就是为什么第二次点击有效——点击事件在第一次点击后绑定,第一次点击“调用”要加载的javascript

看起来您不需要AJAX调用中的任何动态内容。您可以从link_to helper中删除“remote:true”选项,只需将index.js.erb的内容放在index.html.erb中(可能在底部或:script content块中)

我通常不会使用remote helper之类的东西,但是,把它想象成一个AJAX调用,你想请求一个动作,处理它,并返回一些关于发生了什么的信息

谢谢你的洞察力,但是“添加一些东西”到什么?用户点击链接,表单就会呈现在页面上。您是否建议包装$foo.append();在类似$.ready这样的方法中,是否在click回调函数中?