Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RJS中元素值的访问_Ruby On Rails_Rjs - Fatal编程技术网

Ruby on rails RJS中元素值的访问

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似乎

在RubyonRails中,我使用一个内联RJS,试图通过访问selectedIndex属性来找出选择了哪个选择选项。由于某种原因,无法使其工作

因此,例如,分配/更改selectedIndex属性非常有效:

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 << "}"