Как требовать и разрешать несколько сильных параметров - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь часами только «разрешить» следующие параметры-ha sh в контроллере:

{
  "utf8"=>"✓",
  "authenticity_token"=>"...",
  "article"=>{
    "title"=>"Titel Tags",
    "text"=>"Tags Tags Tags"
  },
  "tags"=>{
    "name"=>"ufos, foo, bar, aerzte"
  },
  "commit"=>"Create Article"
}

Мой подход с tap

def article_params
params.tap { |article_params| article_params.require(:article).permit(:title, :text)}.tap {|tags_params| tags_params.require(:tags).permit(:name) }
end

По-прежнему выводится, что параметры недопустимы - поэтому я вообще не могу использовать вход из представления в моем контроллере, даже если ha sh настроен нормально.

<ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"DuMUDfPFe6iFq2Jwj4gTst1nFI3JVwTCoXu/oL53TxE1cXhtK1d+WOBL4U7A3Efo2sGxr7RCHLx3LTau7SK0xg==", "article"=><ActionController::Parameters {"title"=>"Titel Tags", "text"=>"Tags Tags Tags"} permitted: false>, "tags"=><ActionController::Parameters {"name"=>"ufos, foo, bar, aerzte"} permitted: false>, "commit"=>"Create Article", "controller"=>"articles", "action"=>"create"} permitted: false>

Что это то, что я явно делаю ужасно неправильно и против пути рельсов? Я думал, что использование tap было бы чертовски умным подходом, но явно недостаточно умным для «взлома кода рельсов». :)

Нужна помощь!

1 Ответ

1 голос
/ 24 февраля 2020

Вы пробовали это?

def article_params
  params.permit(
    :utf_8,
    :authenticity_token,
    :commit,
    tags: [:name],
    article: [:title,:text]
  )
end

Это работает для меня.

...