【问题标题】:rails rjs replacement and swap valuesrails rjs 替换和交换值
【发布时间】:2009-09-03 17:24:00
【问题描述】:

我正在尝试弄清楚如何使用 RJS 在两个字段之间进行交换...我知道如何替换这些值,但我似乎无法弄清楚如何读取它。

不能通过 RJS 读取值吗?只能换?

<%= link_to_function "Swap" do |page| 
            #to_value = page[:currency_to].value
            page[:currency_from].value = to_value
            page[:currency_to].value = "test"
        end %>

http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper/JavaScriptGenerator/GeneratorMethods.html#M001664

【问题讨论】:

    标签: javascript ruby-on-rails ruby rjs


    【解决方案1】:

    我测试了以下两个。

    <%= link_to_function "Swap", 'var tmp_frm = $("#currency_from").val();
                                  var tmp_to = $("#currency_to").val();
                                  $("#currency_from").val(tmp_to);
                                  $("#currency_to").val(tmp_frm);'%>
    

    或者更好

    <%= link_to_function "Swap", 'var tmp_frm = $("#currency_from").val();
                                  $("#currency_from").val($("#currency_to").val());
                                  $("#currency_to").val(tmp_frm);'%>
    

    根据您的 html,您可能需要删除井号

    <%= link_to_function "Swap", 'var tmp_frm = $("currency_from").value;
                                          var tmp_to = $("currency_to").value;
                                          $("currency_from").value = tmp_to;
                                          $("currency_to").value = tmp_frm;'%>
    

    【讨论】:

    • 啊,太好了。做到了。或者几乎,这个想法是正确的,但由于某种原因,这些都不起作用,我不得不稍微修改它。谢谢!
    【解决方案2】:

    我对原型或 rjs 了解不多,但快速浏览原型 API 会发现 getValue()。我认为这与 page[:currency_to] 返回一个原型元素有关,而不仅仅是一个 DOM 元素。

    也许换个试试

    to_value = page[:currency_to].value
    

    to_value = page[:currency_to].getValue()
    

    你能在 rjs 文件中使用任何你想要的 javascript 吗?我的猜测是否定的,因为它是 Ruby 的“渲染”Javascript。

    我认为您链接到的 Rails API 部分有点误导。它们似乎不是指实际的“值”,它们只是使用值作为要传递给块的名称。

    【讨论】:

    • 是的......不,它似乎不起作用。设置事情并让事情发生很容易,但阅读事情似乎很困难。我似乎找不到任何例子。
    【解决方案3】:
    <%= link_to_function "Swap", 'var tmp_frm = $("currency_from").value;
                                          var tmp_to = $("currency_to").value;
                                          $("currency_from").value = tmp_to;
                                          $("currency_to").value = tmp_frm;'%>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      相关资源
      最近更新 更多