Обединете ActionController::Parameters с релси 5

В rails 4 мога да се слея! StrongParams, но след rails 5 (beta1) се сливат! не е налично. Кой е най-добрият начин да направите това в контролер

  params = ActionController::Parameters.new({
             name: 'Francesco',
             age:  22,
             role: 'admin'
         })
         params.merge!(city: "Los Angeles")

person Olivier    schedule 05.01.2016    source източник


Отговори (4)


Доколкото мога да видя от изходния код, имате merge не merge!. С други думи, не изглежда възможно да се промени хешът на място.

Следният код ще работи:

params = ActionController::Parameters.new({
             name: 'Francesco',
             age:  22,
             role: 'admin'
         })
params = params.merge(city: "Los Angeles")
person Simone Carletti    schedule 05.01.2016
comment
Някаква идея как да се слеят в параметрите на вложен модел? - person W.M.; 18.03.2017
comment
@W.M. нещо като params[:nested_params] = params[:nested_params].merge(...) - person Aleksandr K.; 26.06.2017

params.merge!(град: "Лос Анджелис") работи с Rails5.0.1

въведете описание на изображението тук

В Rails 5: ActionController::Parameters вече връща обект вместо хеш.

така че трябва да използвате params.permit(:city).to_h за достъп до city.

За повече подробности как ActionController::Parameters работи в Rails5?

Справка: http://www.rortuts.com/ruby-on-rails/rails5-actioncontrollerparameters/

person Vaibhav    schedule 23.02.2017

Надявам се това да помогне на всеки.

def comment_params
  params.require(:comment).permit(:title, :user_id, :color)
end

Искам да обединя цветен атрибут с моя персонализиран цветови код или име. така че да обедините цветови атрибут динамично

Инициализирайте параметрите в rails 5 по този начин,

params = ActionController::Parameters.new(comment_params)
params = params.merge(color: "green")
person SSR    schedule 02.04.2016

person    schedule
comment
Моля, добавете някакво обяснение към отговора си. Отговорите само с код не се препоръчват на SO. Благодаря ти. - person Gennadii Saprykin; 23.08.2016
comment
Това работи само когато (всички или някои) параметри са разрешени - person Mosselman; 24.11.2017
comment
Вместо това връща друга грешка: недефиниран метод `to_h' за #‹User:0x0000000734f088› Имахте предвид? to_s - person Alexander Gorg; 05.12.2017