当前在我的ruby on rails项目中,我的events / new.html.erb看起来像这样:
<h2>Neuer Event</h2><br>
<div id="kalendi">
<%= render 'kalendi' %>
</div>
<ul class="lista">
</ul>
<%= simple_form_for(@event) do |f| %>
<%= f.input :name %>
<%= f.input :content %>
<%= f.input :date%>
<%= f.input :tag_list, as: :check_boxes, collection: ['Logik', 'Ethik', 'Metaphysik'] %><br>
<%= f.button :submit %>
<% end %>
<script>
$(document).ready(function(){
$(document).on('click', ".btn2", function () {
var buttonContent = $(this).html();
$(".lista").append("<li>" + buttonContent + "</li>");
});
});
</script>
div“ kalendi”生成一个日历,用户可以在其中选择一些日期。假设用户选择了“ 2016-02-08”,“ 2016-02-09”和“ 2016-02-10”。 <ul class="lista">
看起来像这样:
<ul class="lista">
<li>2016-02-08</li>
<li>2016-02-09</li>
<li>2016-02-10</li>
</ul>
我希望,当用户按下提交按钮时,的输入是所选日期的数组。我需要做什么?预先感谢!
编辑:我听说,将数组从simple_form gem传递到控制器并不容易。让我们更改一下我的问题:我需要做什么,所以控制器会得到如下字符串:“ 2016-02-08,2016-02-09,2016-02-10”?
编辑2,试图遵循Albert Paul的建议:我添加了这样的隐藏字段:
<%= simple_form_for([@event, @dateevent]) do |f| %>
<%= f.input :date, :as => :hidden, :input_html => { :value => ".alist" } %>
<%= f.button :submit %>
<% end %>
为了测试,我创建了一个名为alist的div:
<div class="alist">abcdefghijklmnopqrstuvwxxxxz</div>
目前,日期值为“ .alist”。我需要输入XXX { :value => "XXX" }
来获取div的内容吗?我尝试了以下操作:$(".alist").val()
,但没有成功。预先感谢!
Edit3:没关系,我找到了解决方案。
Rails仅将输入标签作为参数,但是我们可以使用Javascript进行破解并获取这些元素。在用户提交页面时,使用jquery将<li></li>
的内容复制到此隐藏字段中,从而在表单中添加一个隐藏字段,并在您的提交按钮中添加一个click事件,因此,当提交该内容时,您将在自己的内部获取值隐藏字段。
hidden_field(:signup, :pass_confirm)
http://apidock.com/rails/ActionView/Helpers/FormHelper/hidden_field
使用jquery
text()
获取<li>
的内容
不是首选方法,我建议使用rails复选框标签。