Ruby on rails RoR类vs实例变量,并将值中继到部分

Ruby on rails RoR类vs实例变量,并将值中继到部分,ruby-on-rails,variables,renderpartial,Ruby On Rails,Variables,Renderpartial,我有一个控制器主页,有一个相应命名的视图。控制器创建@MyLocalSuite变量,视图包括以下行: <li class="active"><%= link_to "Perforce", :action => 'renderp4', :remote => true, :localSuites => @myLocalSuites %></a></li> 我尝试过的一个例子。我想我离这里不远,但是 <li class="ac

我有一个控制器主页,有一个相应命名的视图。控制器创建@MyLocalSuite变量,视图包括以下行:

<li class="active"><%= link_to "Perforce", :action =>  'renderp4', :remote => true, :localSuites => @myLocalSuites %></a></li>
我尝试过的一个例子。我想我离这里不远,但是

<li class="active"><%= link_to "Perforce", :action =>  'renderp4', :remote => true, :localSuites => @myLocalSuites %></a></li>

$('#MainPage').replaceWith('<%= escape_javascript render "perforce_sync/perforceSync", :suitesLocally => params[:localSuites]%>')

<%= select_tag "perforceSuites", options_for_select(params[:suitesLocally]), {:class => 'form-control', :size => "20", :multiple => true} %>

谢谢

对于您的评论,您可以在这里做两件事。一种方法是在页面加载时简单地呈现一些动态JS,然后在稍后使用javascript显示数据

但是,如果此数据取决于页面加载后的用户操作,则必须使用AJAX向服务器发出另一个请求

第一种方式可能如下所示:

<script>
  var my_data = "<%= @some_data %>";   
    //@some_data could be set by the controller action for example
  $('button').click(function() {
    $('div.content_container').text(my_data);
  });
</script>
<script>
  $('button').click(function() {
    $.ajax({
      url: '/some_resource/id.json',
      data: {param1: 'some_user_data'}
    }).done(function(data) {
      $('div.content_container').text(data);
    });
  });
</script>
第二种方式如下所示:

<script>
  var my_data = "<%= @some_data %>";   
    //@some_data could be set by the controller action for example
  $('button').click(function() {
    $('div.content_container').text(my_data);
  });
</script>
<script>
  $('button').click(function() {
    $.ajax({
      url: '/some_resource/id.json',
      data: {param1: 'some_user_data'}
    }).done(function(data) {
      $('div.content_container').text(data);
    });
  });
</script>
ajax调用的data选项允许您将参数传递回服务器,以便发送客户端提供的一些数据。如果您想查看其他选项,jqueryajax的文档将非常有用


当客户端接收到来自服务器的响应时,.done回调将被触发,函数参数是返回的数据

让我看看我是否有这个权利,你想让链接调用javascript函数$'MainPage'.replaceWith,然后根据页面上的select标记使用一些数据动态生成该函数的参数吗?这需要ajax,因为您必须将所选选项发送到服务器,然后在javascript代码中使用该响应!。。。所讨论的参数在父mainpage视图中存在字符串数组-@MyLocalSuite。我想将其传递给replaceWith,然后再将其传递给在mainpage中呈现的部分,以使用该数组的内容填充select_标记…为什么不只为_select@myLocalSuites?这正是我所期望的工作-但由于某种原因,get的值丢失了renderp4',:remote=>true%>在主页视图中正确显示了@MyLocalSuite的值,但是如果我重复这一点,将其放入performesync.erb.html中,它是空的…您是否希望在页面加载时立即呈现performesync部分?谢谢Slicedpan。我认为AJAX路线是最有意义的。从逻辑上讲,当我的主页导航栏上有几个按钮时,当用户返回到Perforce页面时,它会刷新select_标签内容,这是有意义的。。。因此,我现在将非常感激地接受您的回答,让您安静下来——直到我被AJAX实现弄得头晕目眩:谢谢您:不用担心。快乐编码!
<script>
  $('button').click(function() {
    $.ajax({
      url: '/some_resource/id.json',
      data: {param1: 'some_user_data'}
    }).done(function(data) {
      $('div.content_container').text(data);
    });
  });
</script>