如何传递 <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>
这不是首选方式,我建议使用 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>
这不是首选方式,我建议使用 rails 复选框标记。