Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 时间\选择空白字段保存提交表单时的默认时间_Ruby On Rails_Ruby On Rails 3_Time Select - Fatal编程技术网

Ruby on rails 时间\选择空白字段保存提交表单时的默认时间

Ruby on rails 时间\选择空白字段保存提交表单时的默认时间,ruby-on-rails,ruby-on-rails-3,time-select,Ruby On Rails,Ruby On Rails 3,Time Select,我很难理解我的时间选择。我的目标是在表单提交后,仅在我的show操作中呈现用户创建的时间选择 但是,对于用户未触及的所有时间选择字段,默认呈现时间为上午12:00。我正在寻找一种方法来停止保存默认时间值(如果我不得不猜测,这是不可能的),或者创建一个条件来阻止渲染默认时间值 到目前为止,我查看了以下内容,但没有成功: 这是我的密码: _form.html.erb (only the snippet that I am having trouble with for brevity)

我很难理解我的时间选择。我的目标是在表单提交后,仅在我的show操作中呈现用户创建的时间选择

但是,对于用户未触及的所有时间选择字段,默认呈现时间为上午12:00。我正在寻找一种方法来停止保存默认时间值(如果我不得不猜测,这是不可能的),或者创建一个条件来阻止渲染默认时间值

到目前为止,我查看了以下内容,但没有成功:

  • 这是我的密码:

    _form.html.erb (only the snippet that I am having trouble with for brevity)
    
    
                        <td>
                        <span style="display: block; width: auto; margin-left: 4%">
                            <%= f.time_select :med1_time_of_day1, { include_blank: true, twelve_hour: true, minute_step: 15, ampm: true }, style: "width: 45%;" %>
                        </span>
                        <span style="display: block; width: auto; margin-left: 4%">
                            <%= f.time_select :med1_time_of_day2, { include_blank: true, twelve_hour: true, minute_step: 15, ampm: true }, style: "width: 45%;" %>
                        </span>
                        <span style="display: block; width: auto; margin-left: 4%">
                            <%= f.time_select :med1_time_of_day3, { include_blank: true, twelve_hour: true, minute_step: 15, ampm: true }, style: "width: 45%;" %>
                        </span>
                        <span style="display: block; width: auto; margin-left: 4%">
                            <%= f.time_select :med1_time_of_day4, { include_blank: true, twelve_hour: true, minute_step: 15, ampm: true }, style: "width: 45%;" %>
                        </span>
                    </td>
                    <td>
    
    \u form.html.erb(为简洁起见,仅限于我遇到问题的代码片段)
    

    show.html.erb
    药物名称和使用说明
    一天中的时间
    服用药物当月的天
    



    注意:我还尝试替换@instance\u var.nil?具有 @实例变量为空?和@instance\u var.empty?没有成功


    万一需要控制器

        med_record_forms_controller.rb
    
        class MedRecordFormsController < ApplicationController
      before_filter :get_resident
    
      def index
        @med_record_form = @resident.med_record_forms
      end
    
      def new
        @med_record_form = @resident.med_record_forms.build
      end
    
      def create
        @med_record_form = @resident.med_record_forms.build(params[:med_record_form])
        if @med_record_form.save
          redirect_to [@resident, @med_record_form] #, flash_class[:success] = "Form was created!"
        else
          render 'new' #, flash[:error] = "There was a problem with the form"
        end
      end
    
      def show
        @med_record_form = @resident.med_record_forms.find(params[:id])
      end
    
      def update
        @med_record_form = @resident.med_record_forms.find(params[:id])
        if @med_record_form.update_attributes(params[:med_record_form])
          flash[:success] = "Form updated"
          redirect_to controller: 'residents', action: 'show', id: params[:id]
        else
          render 'edit', flash[:error] = "Unable to update form"
        end
      end
    
      def edit
        @med_record_form = @resident.med_record_forms.find(params[:id])
      end
    
      def destroy
        @med_record_form = @resident.med_record_forms.find(params[:id])
        @med_record_form.destroy
        flash[:notice] = "You sure?"
        redirect_to resident_med_record_forms_path
      end
    
      private
      # get_resident converts the resident_id given by the routing
      # into an @resident object, for use in this controller & coresponding views
      def get_resident
        @resident = Resident.find(params[:resident_id])
      end
    end
    
    med\u record\u forms\u controller.rb
    类MedRecordFormsController<应用程序控制器
    在\u筛选器之前:获取\u常驻
    def索引
    @med_record_form=@resident.med_record_forms
    结束
    def新
    @med_record_form=@resident.med_record_forms.build
    结束
    def创建
    @med_record_form=@resident.med_record_forms.build(参数[:med_record_form])
    if@med\u record\u form.save
    将_重定向到[@resident,@med_record_form]#,flash_class[:success]=“表单已创建!”
    其他的
    呈现“new”#,flash[:error]=“表单有问题”
    结束
    结束
    def秀
    @med_record_form=@resident.med_record_forms.find(参数[:id])
    结束
    def更新
    @med_record_form=@resident.med_record_forms.find(参数[:id])
    如果@med_record_form.update_属性(参数[:med_record_form])
    flash[:success]=“表单已更新”
    将_重定向到控制器:“常驻”,操作:“显示”,id:params[:id]
    其他的
    呈现“编辑”,flash[:错误]=“无法更新表单”
    结束
    结束
    定义编辑
    @med_record_form=@resident.med_record_forms.find(参数[:id])
    结束
    def销毁
    @med_record_form=@resident.med_record_forms.find(参数[:id])
    @医疗记录表
    flash[:notice]=“你确定?”
    将\重定向到常驻\医疗\记录\表单\路径
    结束
    私有的
    #get_resident转换路由给定的常驻id
    #进入@resident对象,用于此控制器和响应视图
    def get_居民
    @resident=resident.find(参数[:resident\u id])
    结束
    结束
    
    这个问题与此类似:

    我发现时间的默认设置是“选择”将时间部分设置为空,但有一个隐藏的日期组件未设置为空。当您查看参数时可以看到:

    “我的时间(1i)”=>“1”,“我的时间(2i)”=>“1”,“我的时间(3i)”=>“1”,“我的时间(4i)”=>,“我的时间(5i)”=>”

    您需要在控制器中将时间设置为零,如下所示:

    def create
      @med_record_form = @resident.med_record_forms.build(params[:med_record_form])
      @med_record_form.med1_time_of_day1 = nil if params[:med_record_form]["med1_time_of_day1(4i)"].blank? && 
            params[:med_record_form]["med1_time_of_day1(5i)"].blank?
      if @med_record_form.save
        redirect_to [@resident, @med_record_form] #, flash_class[:success] = "Form was created!"
      else
        render 'new' #, flash[:error] = "There was a problem with the form"
      end
    end
    

    谢谢@RLawrenz!你的建议解决了我的问题。我希望能很快找到一个更简洁的解决方案。如果我这样做了,我会把它贴在这里。我很感谢你花时间帮助一个新手。
    def create
      @med_record_form = @resident.med_record_forms.build(params[:med_record_form])
      @med_record_form.med1_time_of_day1 = nil if params[:med_record_form]["med1_time_of_day1(4i)"].blank? && 
            params[:med_record_form]["med1_time_of_day1(5i)"].blank?
      if @med_record_form.save
        redirect_to [@resident, @med_record_form] #, flash_class[:success] = "Form was created!"
      else
        render 'new' #, flash[:error] = "There was a problem with the form"
      end
    end