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

JavaScript code fails to render partials on form

本文关键字:现部 表单 代码 JavaScript      更新时间:2023-09-26

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

例如,如果用户选择"Cycling",我希望一个名为"_cardio_time.erb"的部分显示"distance"、"predicted space"answers"duration"字段。如果用户选择"Jumping Jack",我希望一个名为_cardio_sets的部分显示"sets"answers"reps"字段。

以下是我编写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控制台中生成任何错误,但当我从下拉菜单中选择"循环"时,以下文本会呈现在表单上:

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

我做错了什么?我正在学习Rails和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 %>
    })    
});

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