Добавить пространство имен для form_tag в Rails - PullRequest
0 голосов
/ 10 июня 2019

Я использую bootstrap_form gem для генерации форм в Rails. В моем виде формы я использую form_tag вместо form_for

  <%= bootstrap_form_tag url: 'metafields' do |f| %>
    <%= f.hidden_field :owner_id, value: params[:owner_id] %>
    <%= f.text_field :namespace, placeholder: 'Namespace of metafield' %>
    <%= f.text_field :key, placeholder: 'Key of metafield' %>
    <%= f.text_area :description, placeholder: 'Description about metafield' %>
    <%= f.select :type, [['String', 'string']], class: 'selectpicker' %>
  <% end %>

Есть ли способ отправить эту форму с параметрами, включая префиксное пространство имен, например params[:metafield][:owner_id].

Когда я пытался с

<%= bootstrap_form_tag url: 'metafields', namespace: 'metafield' do |f| %>

Это генерирует ниже ввод, который не то, что я хочу

<input placeholder="Key of metafield" name="key" id="metafield_key" class="form-control" type="text" kl_vkbd_parsed="true">

Ответы [ 2 ]

1 голос
/ 10 июня 2019

Quyetdc ответ - это путь, если у вас нет динамических форм, вот более чистый способ

  <%= bootstrap_form_tag url: 'metafields' do |f| %>
    <%= f.fields_for :metafield do |mf| %>
      <%= mf.hidden_field :owner_id, value: params[:owner_id] %>
      <%= mf.text_field :namespace, placeholder: 'Namespace of metafield' %>
      <%= mf.text_field :key, placeholder: 'Key of metafield' %>
      <%= mf.text_area :description, placeholder: 'Description about metafield' %>
      <%= mf.select :type, [['String', 'string']], class: 'selectpicker' %>
  <% end %>
1 голос
/ 10 июня 2019

Начиная с этот , form_tag не поддерживает пространство имен, такое как form_for.Таким образом, я нашел обходной путь, как показано ниже, который генерирует правильный name для ввода, как если бы мы использовали form_for

    <%= bootstrap_form_tag url: 'metafields' do |f| %>
      <%= f.hidden_field :owner_id, value: @owner_id %>
      <%= f.hidden_field :owner_class, value: @owner_class %>
      <%= f.text_field :'metafield[namespace]', label: 'Namespace', placeholder: 'Namespace of metafield' %>
      <%= f.text_field :'metafield[key]',label: 'Key', placeholder: 'Key of metafield' %>
      <%= f.text_field :'metafield[value]',label: 'Value', placeholder: 'Key of metafield' %>
      <%= f.select :'metafield[value_type]', [['String', 'string']], label: 'Type', class: 'selectpicker' %>
      <%= f.text_area :'metafield[description]', label: 'Description', placeholder: 'Description about metafield' %>
      <%= f.submit 'Submit', class: 'btn btn-outline-dark float-right' %>
    <% end %>
...