【发布时间】:2017-09-13 09:35:52
【问题描述】:
我有一个使用 simple_form 3.5 的 Rails 5.1.3 应用
我有一个Books 表,其中有一个包含authors 的Postgres 数组列。我已经设法构建成功填充和保存数组的所有逻辑,但是我正在努力使用 CoffeeScript 向表单动态添加新的作者字段。
new.html.erb
<%= simple_form_for @book do |f| %>
<%= f.input :title %>
<%= f.input :subtitle %>
<%= f.input :authors, as: :array %>
<%= f.button :submit, "Add aditional author", class: "add-author-button" %>
<%= f.input :description %>
<%= f.button :submit %>
<% end %>
array_input.coffee
$(document).ready ->
$('.add-author-button').on 'click', @addAuthorField
addAuthorField: (ev) ->
ev.preventDefault()
$lastAuthorField = $('input[name="book[authors][]"]:last-of-type').clone()
$lastAuthorField.val("")
$(".text.optional.book_authors").append($lastAuthorField)
我遇到的问题是,当我单击“添加其他作者”按钮时,表单会提交,而不是在表单中附加一个空白文本字段。如果我让其他列的验证失败,表单会重新呈现一个额外的作者字段。
【问题讨论】:
-
你不能用链接标签代替按钮标签吗?这样你就可以防止你的表单被提交
标签: javascript ruby-on-rails coffeescript simple-form