【发布时间】:2011-03-15 16:30:03
【问题描述】:
有问题的应用程序利用 jQuery 执行 ajax 请求以填充相关的选择框。我的控制器动作 responds_to :js,在 .js.erb 文件中我有:
str += '<%= f.select field.name, list, {}, { :class => "list", :multiple => "multiple", :style => "size:8; width:100px;" } %>';
“list”的填充方式如下:
str += '<% list = @validation_model.lookup([field], @lookup) %>';
我正在将它附加到一个 div 中。在 .js.erb 模板文件的末尾。但是,当“list”包含多个值时,模板解析失败。如果为空,或者只包含一个值,则解析成功。
这是我遇到的错误,还是我做错了什么?请注意,这显示为解析错误而不是运行时错误,因此我无法准确确定 Firebug 或 Safari Dev 中的问题。
更新:这是 .js.erb 文件的完整代码。我已将“list”变量替换为内联逻辑以检索数组。
str = '<% fields_for :mapapps do |f| %>';
<% for tf in @tag.tag_fields.find(:all, :order => :sequence) %>
<% field = tf.parentfield %>
<% if !@lookup.include?(field) %>
$("#<%= field.name %>").remove();
<% else %>
<% next %>
<% end %>
str += '<div id="<%= field.name %>" class="floater">';
str += '<label for="mapapps_<%= field.name %>"><%= field.label %></label>';
str += '<%= f.select field.name, @validation_model.lookup([field], @lookup), {}, { :class => "list", :multiple => "multiple", :style => "size:8; width:100px;" } %>';
str += '</div>';
<% end %>
str += '<% end %>'
$("#mfrsdiv").append(str);
【问题讨论】:
-
完整视图代码可能会有所帮助。在您的第二行代码中,您实际上是在 ERb 标记中分配列表变量,该标记不会在 javascript 变量分配中输出任何内容。
-
我注意到的一个关键区别是,当数组中有多个值时,Rails 在选择中的每个“选项”元素后放置一个回车符。这会导致解析错误吗?
标签: javascript jquery ruby-on-rails erb