在rails

时间:2015-07-07 05:31:38

标签: javascript ruby-on-rails rjs

在模型弹出窗口中接收变量作为问题类型ID为' $('#subquestion')。val()'基于此值,模型弹出内容必须创建,

模型弹出窗口接收值但基于此

<%@lg = Language.all %>
<% @qs_type = Question.find( **javascript value** ).question_type %>
<% @lg.each do |n| %>
   if ( @qs_type == 11)  
      matchingtype question two textbox
     <%= text_area %>   
     <%= text_area %>   
   elsif @qs_type == 3 
     mutiple choice one textbox. 
    <%= text_area %>
<% end %>

有没有办法做到这一点? RJS是否会有所帮助?

1 个答案:

答案 0 :(得分:2)

很抱歉,答案可能不是。

在评估模板时,Rails将首先解析并运行任何嵌入的ruby ....然后将生成的html(可能还有javascript)传递回客户端的机器,然后解释html,然后运行的JavaScript。

所以......当你运行javascript时,ruby已经运行并且任何结果都被替换了。你无法从红宝石中调用javascript值,因为javascript不会运行,直到红宝石使用它为时已晚。

你需要重新思考被召唤的内容和时间。 另一个可用的选项是创建一个返回json的新控制器操作...并在模板中,使用 模板中的javascript中的结果通过AJAX调用该操作。

但是我认为你上面的内容是javascript和ruby交织在一起......应该简化一下。从您所展示的内容中分离出您需要的内容......并向我们提供您需要的更多信息,我们可以帮助您找到解决方案。