如何通过 在红宝石上形成的元素

问题描述 投票:-1回答:1

当前在我的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:没关系,我找到了解决方案。

javascript ruby-on-rails simple-form
1个回答
2
投票

Rails仅将输入标签作为参数,但是我们可以使用Javascript进行破解并获取这些元素。在用户提交页面时,使用jquery将<li></li>的内容复制到此隐藏字段中,从而在表单中添加一个隐藏字段,并在您的提交按钮中添加一个click事件,因此,当提交该内容时,您将在自己的内部获取值隐藏字段。

hidden_field(:signup, :pass_confirm)

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

使用jquery text()获取<li>的内容

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

不是首选方法,我建议使用rails复选框标签。

© www.soinside.com 2019 - 2024. All rights reserved.