代码之家  ›  专栏  ›  技术社区  ›  99miles

如何从javascript呈现部分

  •  9
  • 99miles  · 技术社区  · 15 年前

    我有一个选择,根据不同选择中的选择填充 为此,我按照RailsCast 88“动态选择菜单”中的建议进行了操作。

    但现在我需要呈现一个部分,传入在每个选择中选择的值。 我不知道如何简单地从select中的:onchange事件触发方法调用,所以我认为我需要从检测select change事件的javascript处理程序中调用render:partial。但我不知道怎么做。我在javascript方法中(在.js.erb文件中)尝试了以下操作,但效果不如预期:

    function staffSelected() {
        $('date_area').show();
        <% render :partial => "calendar" -%>
    }
    

    有人有好的解决办法吗?

    2 回复  |  直到 14 年前
        1
  •  6
  •   Mike Trpcic    15 年前

    不能在javascript内部呈现部分内容来检测更改事件。ruby是服务器端,javascript是客户端。当你的javascript运行时,你的ruby已经被解析成普通的ol'html了。

    您最好的选择是执行以下操作:

    使用ajax控件(有prototype/scriptaculous控件)在onchange事件中命中服务器。你的服务器可以发回RJS来更新其他下拉列表, 它可以返回标准json,您可以在 onSuccess ajax调用的方法。

        2
  •  8
  •   miligraf    14 年前

    我想这就是你要找的。我正在用“colors”id在div中渲染部分,仅当所选单选按钮的值为红色时才会渲染部分:

    <script language="javascript" type="text/javascript">
    jQuery(function($){
      $('#radio-buttons input[type=radio]').click(function() {
        if ($(this).attr("value") === "red") {
          $("#colors").html('#{escape_javascript(render :partial => "colors")}');
        }
      });
    });
    </script>