Rails rjs 替换和交换值

发布于 2024-08-04 05:43:09 字数 609 浏览 7 评论 0原文

我试图弄清楚如何使用 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

I'm trying to figure out how to use RJS to swap between two fields... i know how to replace the values but I can't seem to figure out how to read it.

Is it not possible to read values thru RJS? Only to replace?

<%= 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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

青朷 2024-08-11 05:43:09

我测试了以下两项。

<%= 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;'%>

I tested both of the following.

<%= 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);'%>

or better yet

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

depending on your html, you may need to remove the pound symbols

<%= 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;'%>
妖妓 2024-08-11 05:43:09

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

也许尝试替换

to_value = page[:currency_to].value

to_value = page[:currency_to].getValue()

Can you just use any javascript you Want in rjs files?我的猜测是否定的,因为它是 Ruby“渲染”Javascript。

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

I don't know much about prototype or rjs, but a quick look at the prototype API shows a getValue(). I would think this has to do with page[:currency_to] returning a prototype element as opposed to just a DOM element.

Maybe try replacing

to_value = page[:currency_to].value

with

to_value = page[:currency_to].getValue()

Can you just use whatever javascript you want in rjs files? My guess is no, since it's Ruby 'rendering' Javascript.

The section of the Rails API you linked to is a bit misleading I think. They don't seem to be referring to an actual 'value', they just use value as the name to be passed to the block.

昔日梦未散 2024-08-11 05:43:09
<%= 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;'%>
<%= 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;'%>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文