2017-10-09 103 views
-1

我希望我的服務器在調用控制器更新操作時更新模型參數(layout_is_public)。該參數不應該由用戶直接更新。如何在導軌中添加自定義強參數5

我的控制器強PARAMS:

def allowed_params 
    params.require(:payload).permit(:name, :layout_id) 
end 

我在同一個控制器before_action:

def correct_layout 
    if allowed_params[:layout_id].present? 
    puts allowed_params.merge(layout_is_public: false).inspect 

    # puts output is as expected: 
    # => <ActionController::Parameters {"layout_id"=>1, "layout_is_public"=>false} permitted: true> 

    allowed_params = allowed_params.merge(layout_is_public: false) 
    end 
end 

我不知道如何更新我的allowed_pa​​rams到,雖然包括新生成的參數。

我也不確定這個動作是否真的應該在控制器或模型本身中執行。任何幫助將不勝感激:)

注:layout_is_public變量剛剛設置爲false在這裏簡短。

回答

0

您也可以選擇試試這個: -

private 

def allowed_params 
    ap = params.require(:payload).permit(:name, :layout_id) 
    ap[:layout_is_public] = 'false' if params[:payload][:layout_id].present? 
    ap 
end 
0

您不能直接分配強參數。將其分配給變量併合並參數。

def correct_layout 
     if allowed_params[:layout_id].present? 
     puts allowed_params.merge(layout_is_public: false).inspect 
     # puts output is as expected: 
     # => <ActionController::Parameters {"layout_id"=>1, layout_is_public"=>false} permitted: true> 
     allowed = allowed_params 
     allowed_params = allowed.merge(layout_is_public: false) 
     end 
    end