JavaScript代码无法在表单上呈现部分内容

时间:2015-04-06 00:26:55

标签: javascript jquery ruby-on-rails

我需要帮助解决我的Rails 4应用程序中的一些JavaScript问题。我的目标是通过仅显示用户可以选择的不同类型的有氧运动的相关表单字段来改善用户体验。

例如,如果用户选择" Cycling",我想要一个名为" _cardio_time.erb"显示"距离," "预测的节奏,"和#34;持续时间"领域。如果用户选择说" Jumping Jack",我想要一个名为_cardio_sets的部分来显示" sets"和"代表"领域。

我尝试编写JavaScript代码:

$(document).ready(function() {
  $("#cardio_exercise_aerobic_training_list_id").change(function(e){
    e.preventDefault();
  $("<% if cardio_exercise.aerobic_training_list.category == 1 %>");
  $("<%= escape_javascript render(:partial => 'layouts/cardio_time.erb' %>").insertAfter('#read-cardio-exercise-description-text');
  $("<% else %>");
  $("<%= escape_javascript render(:partial => 'layouts/cardio_sets.erb' %>").insertAfter('#read-cardio-exercise-description-text');
  $("<% end %>");
  })    
});

代码在Firebug控制台中不会产生任何错误,但是当我选择&#34; Cycling&#34;从下拉菜单中,以下文本呈现在表单上:

<%= escape_javascript render(:partial => 'layouts/cardio_sets.erb' %><%= escape_javascript render(:partial => 'layouts/cardio_time.erb' %>

我做错了什么?我正在学习Rails和JavaScript。我将不胜感激任何帮助!

1 个答案:

答案 0 :(得分:0)

$(document).ready(function() {
    $("#cardio_exercise_aerobic_training_list_id").change(function(e){
        e.preventDefault();
        <% if cardio_exercise.aerobic_training_list.category == 1 %>
        $("<%= escape_javascript render(:partial => 'layouts/cardio_time.erb') %>").insertAfter('#read-cardio-exercise-description-text');
        <% else %>
        $("<%= escape_javascript render(:partial => 'layouts/cardio_sets.erb') %>").insertAfter('#read-cardio-exercise-description-text');
        <% end %>
    })    
});

查看删除if / then / end语句的jQuery包装器,并在render末尾添加一个缺少的括号解决了这个问题。