Ruby on rails, Как создать переключатель в форме, но не передавать значение? - PullRequest
0 голосов
/ 21 декабря 2018

недавно я столкнулся с проблемой, я не уверен, как это сделать.

есть 3 модуля, Пользователь, Арендатор и Покупка в моем случае.

Пользователь принадлежит Арендатору, а Покупка принадлежит Пользователю, Tenant has_many покупка через пользователя.

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

_form of Buy

  <%= panel("Tenant panel") do %>
    <div clase="checkbox">
      <% Tenant.all.each do |t| %>
        <%= f.group do %>
          <%= f.radio_button :tenant_id, :checked => (@current_tenant.id == t.id) %>
          <%= label :tenant_id, t.name%>
          <% end %>
      <% end %>
    </div>
  <% end %>

Конечно, это не работает.потому что в Покупке нет tenant_id.Чтобы не было никакого конфликта, я не мог добавить tenant_id.для меня этот переключатель - только триггер.

что мне делать в этом случае?

заранее благодарю.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Вы можете попробовать следующее:

<%= collection_radio_buttons(:purchase, :user_id, Tenant.all, :user_id, :name) %>

, что примерно означает: создать переключатель для каждого Tenant, взять их user_id в качестве значения и отобразить name как текстПри отправке он присваивает user_id выбранного арендатора закупке (@purchase должна быть доступна в представлении), которую вы создали.Не забудьте добавить user_id к Purchase сильным параметрам:)

0 голосов
/ 21 декабря 2018

Вы можете использовать radio_button_tag вместо f.radio_button

radio_button_tag(name, value, checked = false, options = {})

Только вам нужно позаботиться о name поля.Например, если у вас есть модель User и атрибут first_name, тогда имя в HTML-форме будет выглядеть так: user[first_name].

В вашем случае это может быть так

<%= radio_button_tag 'user[tenant_id]', '' ,:checked => (@current_tenant.id == t.id) %> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...