Ruby on rails 控制器最擅长解析输入,但我可以在模型中处理它吗?

Ruby on rails 控制器最擅长解析输入,但我可以在模型中处理它吗?,ruby-on-rails,datetime,model,controller,textfield,Ruby On Rails,Datetime,Model,Controller,Textfield,在我的日历应用程序中,日期存储为文本字段 = text_field :task_time, :day, :value => display_date(@date), :id => "date-n" 我在控制器的索引方法中读取了该日期,但随后在模型中预生成了今天的默认时间: private def generate_task_time self.task_time = Time.now if self.task_time.nil? end 我需要更改它并

在我的日历应用程序中,日期存储为文本字段

  = text_field :task_time, :day, :value => display_date(@date), :id => "date-n"
我在控制器的索引方法中读取了该日期,但随后在模型中预生成了今天的默认时间:

private

   def generate_task_time

   self.task_time = Time.now if self.task_time.nil?

   end
我需要更改它并将默认task_time设置为日历中当前显示的时间,但在尝试在模型中读取它时遇到未定义的局部变量或方法“params”错误:convert_to_string(params[:task_time]

是否有可能在模型中执行此操作,或者最好删除生成任务时间并在控制器中执行所有操作

任何关于语法的建议—

DateTime.strptime("#{params[:date]}")


params
是控制器上的一个实例方法,因此您无法在模型中访问它。您可以将
params[:task\u time]
的值传递给模型,不过:

task.task_time = convert_to_string(params[:task_time]) if params[:task_time]
从控制器对模型设置属性是完全有效的。这是一种用于更新控制器操作中的模型属性的公共Rails模式:

if model.update_attributes(params[:model])
  # do something success-y
else
  # do something fail-y
end

但是如果你开始在控制器中做太多的事情,你就会被请求生命周期所束缚,很难测试你的实际业务逻辑。这总是关于平衡的!

关于你的语法,你不需要在那一行插入
params[:date]
。你只需将值传递给方法:
DateTime.strtime(参数[:日期])
if model.update_attributes(params[:model])
  # do something success-y
else
  # do something fail-y
end