如何传递 <li> 元素以形成 ruby on rails

How to pass <li> elements to form in ruby on rails

目前在我 ruby 的 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>

我希望当用户按下提交按钮时,<%= f.input :date%> 的输入是所选日期的数组。我需要做什么?提前致谢!

编辑:我听说,将数组从 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> 的内容复制到此隐藏字段,因此当它被提交时你'我会在隐藏字段中获取您的值。

hidden_field(:signup, :pass_confirm)

http://apidock.com/rails/ActionView/Helpers/FormHelper/hidden_field

Use jquery text() to get contents of <li>

http://api.jquery.com/text/

这不是首选方式,我建议使用 rails 复选框标记。