我正在使用Rails中的一个应用程序,它允许通过链接将问题添加到测验中。 (a has_many:通过协会)。到目前为止,我正在用Cocoon gem实现这一点。
插入问题的_form.html.erb如下所示:
<table class = "table">
<thead>
<tr>
<th>Category</th>
<th>Question</th>
<th>Answers</th>
<th></th>
</tr>
</thead>
<tbody id = "question_table">
</tbody>
</table>
<div id="questions">
<div id="questionno"></div>
<%= f.fields_for :links do |link| %>
<% render 'link_fields', f: link %>
<% end %>
</div>
<div class="links">
<div id="button_text">
<button type="button" class="btn btn-primary">
<%= link_to_add_association f, :links, :"data-association-insertion-node" => "tbody#question_table", :"data-association-insertion-method" => "append", :class => "button" do %>Add question<% end %>
</button>
</div>
</div>
每次调用link_to_add_association时,都会绘制_link_fields.html.erb。这部分包含几个字段。该文件的片段如下所示:
<tr class = "table_row" >
<div class="nested-fields link-fields" >
<div id="question_from_list">
<td class="col-sm-1">
<div class = "field">
<%= f.select :question_category, options_for_select(Category.all.collect { |category|
[category.categoryBody.titleize, category.id] }, 1), {}, { id: "categories_select_1" } %>
</div>
</td>
我想做的是给每个f.select它自己的id。我做了一些谷歌搜索,似乎在茧中实现这一点的方法是回调。
我正在尝试使用before_insert回调来生成id并获取f.select元素并更改其id。然而,这似乎不起作用。我的代码如下:
资产/ Javascript角/ quizzes.coffee:
$('#questions a.add_fields').data('association-insertion-position', 'before').data 'association-insertion-node', 'this'
$('#questions').on 'cocoon:after-insert', ->
$(this).children('#categories_select_1').attr 'id', 'newId'
return
此回调似乎没有做任何事情。我的quizzes.coffee文件中的其他代码运行得非常好,所以我确定文件已加载。
我确信有一些简单的事情我忽略了,但我不确定我哪里出错了。
非常感谢任何帮助。 感谢