Ruby on rails RJS中元素值的访问
在RubyonRails中,我使用一个内联RJS,试图通过访问selectedIndex属性来找出选择了哪个选择选项。由于某种原因,无法使其工作 因此,例如,分配/更改selectedIndex属性非常有效:Ruby on rails RJS中元素值的访问,ruby-on-rails,rjs,Ruby On Rails,Rjs,在RubyonRails中,我使用一个内联RJS,试图通过访问selectedIndex属性来找出选择了哪个选择选项。由于某种原因,无法使其工作 因此,例如,分配/更改selectedIndex属性非常有效: page['model_author_id'].selectedIndex = 5 但是在RJS中阅读并进行比较是行不通的: if page['model_author_id'].selectedIndex == 0 then xxx end 我在Firebug中进行了调试,RJS似乎
page['model_author_id'].selectedIndex = 5
但是在RJS中阅读并进行比较是行不通的:
if page['model_author_id'].selectedIndex == 0 then xxx end
我在Firebug中进行了调试,RJS似乎生成了以下(不正确的)代码-
所以,问题是-如何使用RJS获取页面元素的值 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 << "}"
page非常感谢ryanb的回答,因为某种原因,我在Rails书籍和论坛上找不到这个问题的答案。事实上,我认为对于像我这样的RJS新手来说,困难在于区别非常微妙——是的,RJS是一个javascript生成器,但为什么它不能同时生成条件/等等。对于您来说,将Ruby转换为JS?这是Ruby语言的一个限制。“=”运算符是一种方法,可以重写该行为,但“if”行为不能。如果您熟悉javascript,那么我建议您不要使用RJS。相反,只需直接混合javascript和erb(使用index.js.erb这样的视图文件)。
page << "if ($('model_author_id').selectedIndex() == 0) {"
page["model_author_id"].selectedIndex = 5 # or whatever you want here
page << "}"