Состояние с параграфами рельсов - PullRequest
0 голосов
/ 26 января 2019

Что не так?

У меня есть форма с переключателями.

Форма отправляет проверенные идентификаторы [] на create действие.

Я вижу значение параметров в консоли, но атрибуты не обновляются.

Всегда присваивает 9

<input name="ids[]" value="1"  type="radio" class="multiradio">
<input name="ids[]" value="2"  type="radio" class="multiradio">
<input name="ids[]" value="3"  type="radio" class="multiradio"> 

p params[:ids]
@advert = Advert.new(advert_params)

if (params[:ids] == "1")
  @advert.update(category: "1")
elsif (params[:ids] == "2")
  @advert.update(category: "2")
elsif (params[:ids] == 3)
  @advert.update(category: "3")
else
  @advert.update(category: "9")
end

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Я думаю, что многое неправильно, если честно ... это не совсем то, как вы создаете чекбоксы в Rails.Вы проверили форму помощника?Или вы рассматриваете возможность использования гема Simple Form?

Способ создания формы:

#assuming you have a related model called category
simple_form_for @advert do |f|
  = f.association :category, as: :checkboxes

Затем в контроллере вы просто вносите белый список в параметр и сохраняете модель:

def update
  @advert.update(advert_params)
end

def advert_params
  params.require(:advert).permit(category_ids: [])
end
0 голосов
/ 26 января 2019

Если я правильно вас понял, у вас есть проблема установки значения категории в @advert.в соответствии с синтаксисом ruby ​​вы должны сдвигать свой код внутри блоков, это означает, что вы должны написать свои условия следующим образом:

   if (params[:ids] == "1")
      @advert.update(category: "1")
   elsif (params[:ids] == "2")
      @advert.update(category: "2")
   elsif (params[:ids] == 3)
      @advert.update(category: "3")
   else
      @advert.update(category: "9")
   end

посмотрите здесь .
более того, ярекомендовал бы использовать случай переключения в этом случае

...