【问题标题】:Accessing values of elements in RJS访问 RJS 中元素的值
【发布时间】:2009-08-17 20:42:34
【问题描述】:

在 Ruby on Rails 中,我使用内联 RJS 并尝试通过访问 selectedIndex 属性找出选择了哪个选择选项。由于某种原因无法使其正常工作。

因此,例如分配/更改 selectedIndex 属性效果很好:

page['model_author_id'].selectedIndex = 5

但是阅读它并在 RJS 中进行比较是行不通的:

if page['model_author_id'].selectedIndex == 0 then xxx end

我在 Firebug 中进行了调试,似乎 RJS 生成了以下(不正确的)代码 -

$("model_author_id").selectedIndex().= = 0;

所以,问题是 - 如何使用 RJS 获取页面元素的值?

【问题讨论】:

    标签: ruby-on-rails rjs


    【解决方案1】:

    RJS 只是一个 javascript 生成器,并且 javascript 在客户端之前不会被执行。因此,当您仍在 Ruby 中时,您无法确定 select 选项的值。

    如果您想对选定的值执行“if”语句,您需要在 Javascript 中执行。

    page << "if ($('model_author_id').selectedIndex() == 0) {"
      page["model_author_id"].selectedIndex = 5 # or whatever you want here
    page << "}"
    

    【讨论】:

    • 非常感谢 ryanb 的回答,由于某种原因,我无法在 Rails 书籍和论坛上找到答案。其实我觉得对于像我这样的 RJS 新手来说,难点在于区别很微妙——没错,RJS 是一个 javascript 生成器,但是为什么它不能也为你生成条件 / 等等,将 Ruby 转换为 JS?
    • 这是 Ruby 语言的限制。 “=”操作符是一种方法,其行为可以被覆盖,但“if”行为不能。如果您对 javascript 感到满意,那么我建议您不要使用 RJS。而是直接混合 javascript 和 erb(使用 index.js.erb 之类的视图文件)。
    猜你喜欢
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多