Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails日期选择器仅适用于_标记_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails日期选择器仅适用于_标记

Ruby on rails Rails日期选择器仅适用于_标记,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我是RoR的新手,在阅读了大量的文章之后,我让datepicker在我的RoR项目中工作,以过滤搜索结果。但是,现在我需要使用datepicker在模型中设置一些值,但是_标记阻止了这一点,并且create操作不会将日期保存在DB中 我尝试删除_标记,但是JS似乎没有在我的网页上激活,日期选择器也不再弹出(尽管如果我在字段中手动输入日期,创建工作正常,并且日期存储在数据库中) 我尝试使用一个隐藏的_字段和其他各种东西来让它工作并与我的模型交互,但我被卡住了 所以我对同一个问题有两种看法: 1-如

我是RoR的新手,在阅读了大量的文章之后,我让datepicker在我的RoR项目中工作,以过滤搜索结果。但是,现在我需要使用datepicker在模型中设置一些值,但是_标记阻止了这一点,并且create操作不会将日期保存在DB中

我尝试删除_标记,但是JS似乎没有在我的网页上激活,日期选择器也不再弹出(尽管如果我在字段中手动输入日期,创建工作正常,并且日期存储在数据库中)

我尝试使用一个隐藏的_字段和其他各种东西来让它工作并与我的模型交互,但我被卡住了

所以我对同一个问题有两种看法: 1-如何让datepicker在没有标签的情况下工作?根据我在Stackoverflow上看到的情况,这是一个正常的用法。 2-如何使用带有_标记的datepicker并与我的模型交互

下面是我的代码片段,用于带有_标记的日期选择器。任何帮助都将不胜感激

GEMFILE

gem 'rails', '4.2.2'
gem 'jquery-rails',           '4.0.4'
gem 'jquery-ui-rails'
gem 'tinymce-rails'
# Bootstrap and stuff
gem "twitter-bootstrap-rails"
gem 'bootstrap-sass',          '3.2.0.0'
gem 'bootstrap-datepicker-rails'

# Datatables
gem 'jquery-datatables-rails', '~> 3.3.0'
HTML

假期管理员

def list
  get_data_set
  @start_date = params['start_date'] || ""
  @end_date = params['end_date'] || ""
    if @start_date.empty? && @end_date.empty?
      @vacations = Vacation.all
    else
      @vacations = dateFilter
    end
  end

def dateFilter
  @start_date = params['start_date']
  @end_date = params['end_date']
  @vacations = Vacation.where(start_date: @start_date..@end_date)
  return @vacations
end
datepicker与_标记配合得很好,这让我觉得我要么很接近,要么在做傻事。任何帮助都会很好

更新:

这是一个新用例的HTML,它有一半是有效的——如果我手动填写start_date和end_date字段,我可以更新模型,但单击该字段不会启动JS来显示日期选择器

<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_for(@vacation_report) do |f| %>

      <%= f.label :timeperiod_name %>
      <%= f.text_field :timeperiod_name, class: 'form-control' %>

      <div class="row">
        <div class="col-md-2 col-md-offset-0">
          <%= f.label :start_date %>
          <%= f.text_field :start_date %>
        </div>
      <div class="col-md-2 col-md-offset-0">
          <%= f.label :end_date %>
          <%= f.text_field :end_date %>
      </div>
    </div>
      <%= f.submit "Create", class: "btn btn-primary" %>
    <% end %>
  </div>
</div>

您应该仔细阅读Rails表单的工作原理。带有
\u标记
后缀的Rails帮助器方法在
表单标记
帮助器定义的表单中使用,而没有
\u标记
后缀的帮助器在
表单标记
帮助器定义的表单中使用。第二种助手称为

看看您是如何定义表单的:

<%= form_tag("/vacations/list", method: "get", action: 'dateFilter') do %>
  ...
<% end %>
另一方面,JS使用了一个散列标记(#),它表示一个ID,而不是一个类

更改:

$('#vacations').dataTable({
致:


当表单中只有一个Datepicker元素时,您可以安全地用#来表示ID。

我已经完成了这项工作。感谢@MarsAtomic将我的想法指向JS。下面是更新后的HTML和JS,我将发布它,以防有一天它能帮助其他人

假期报告.html.erb

<% provide(:title, "Create Report") %>
<h1>Create Report</h1>

<%= form_for(@vacation_report) do |f| %>

<div class="row">
  <div class="col-md-6 col-md-offset-3">

  <%= f.label :timeperiod_name %>
  <%= f.text_field :timeperiod_name, class: 'form-control' %>

  <div class="row">
    <div class="col-md-2 col-md-offset-0">
          <%= f.label :start_date %>
          <%= f.text_field :start_date, :class => 'datepicker' %>
    </div>
    <div class="col-md-2 col-md-offset-0">
        <%= f.label :end_date %>
        <%= f.text_field :end_date, :class => 'datepicker' %>
    </div>
  </div>
  <%= f.submit "Create", class: "btn btn-primary" %>
  </div>
</div>

<% end %>

谢谢你的快速回复!对于我的新用例,我使用form_For,它有一半“有效”——该字段允许我使用start_时间和end_时间更新我的模型,但JS不会开始显示日期选择器。但我会查看您链接到的模型对象帮助器文档。再次感谢。我尝试了一下您的建议,但仍然没有弹出日期选择器(尽管vacations.js确实使日期选择器适用于我的另一个标签用例)。我确实认为你是对的,尽管JS有些地方搞砸了。
<%= f.text_field :timeperiod_name, class: 'form-control' %>
$('#vacations').dataTable({
$('.vacations').dataTable({
<% provide(:title, "Create Report") %>
<h1>Create Report</h1>

<%= form_for(@vacation_report) do |f| %>

<div class="row">
  <div class="col-md-6 col-md-offset-3">

  <%= f.label :timeperiod_name %>
  <%= f.text_field :timeperiod_name, class: 'form-control' %>

  <div class="row">
    <div class="col-md-2 col-md-offset-0">
          <%= f.label :start_date %>
          <%= f.text_field :start_date, :class => 'datepicker' %>
    </div>
    <div class="col-md-2 col-md-offset-0">
        <%= f.label :end_date %>
        <%= f.text_field :end_date, :class => 'datepicker' %>
    </div>
  </div>
  <%= f.submit "Create", class: "btn btn-primary" %>
  </div>
</div>

<% end %>
$(document).ready(function(){
$('#vacation_reports').dataTable({
    "pageLength": 25
});
$('.datepicker').datepicker();
});