首页 > 解决方案 > 如何更新依赖于强参数的值

问题描述

我在控制器中有一个动作(使用强参数):

def home_task_params
  params.require(:home_task).permit(:subject, :description, :data)
end

我想在记录到数据库之前修改数据。我想做类似的事情:

def create
  @home_task = HomeTask.create(
    :subject => home_task_params.subject,
    :description => home_task_params.description,
    :day => home_task_params.data,
    :data => home_task_params.data,
    :class_room => current_user.class_room
  )
end

我该如何实施?

标签: ruby-on-rails

解决方案


params是一个行为类似于哈希的对象。因此,您不能像这样从该对象中读取值,params.subject而必须使用params[:subject].

像这样的东西可能会起作用:

@home_task = HomeTask.create(
  :subject     => home_task_params[:subject], 
  :description => home_task_params[:description], 
  :day         => home_task_params[:data],
  :data        => home_task_params[:data], 
  :class_room  => current_user.class_room 
)

或者您可以将附加值合并到params

@home_task = HomeTask.create(
  home_task_params.merge(
    day: home_task_params[:data], 
    class_room: current_user.class_room
  )
)

推荐阅读