在控制器中为创建和更新设置值(RoR 4)

时间:2013-10-14 22:29:14

标签: ruby-on-rails ruby-on-rails-4 railstutorial.org

我正在通过Mickael Hartl的教程学习RoR ......

在我的parameters_controller中创建或更新记录(我的应用程序的参数定义)时,我需要从会话cookie添加数据。所以我在控制器中添加了这段代码:

private
def current_user
  remember_token = User.encrypt(cookies[:remember_token])
  @current_user ||= User.find_by(remember_token: remember_token)
end

我的create函数中的代码可以自动从会话数据中设置一些字段:

def create
  @parameter = Parameter.new(parameter_params) #code generated by Rails
  @parameter.updated_by = current_user.name    #my additional code
  @parameter.created_by = current_user.name
  respond_to do |format|
    if @parameter.save
    ...

哪种方法正常,但它不适用于更新功能:

def update      
  @parameter.updated_by = current_user.name        #my additional code
  respond_to do |format|                           #code generated by Rails
    if @parameter.update(parameter_params)         
    ...

什么都不做。

有人可以解释我错过了什么吗?

非常感谢!

致以最诚挚的问候,

佛瑞德

1 个答案:

答案 0 :(得分:1)

您需要先设置@parameter。像,

@parameter= Parameter.find(params[:id])

一旦检索到对象,就可以更新它的属性。