首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为Rails中的form_tag添加命名空间

为Rails中的form_tag添加命名空间
EN

Stack Overflow用户
提问于 2019-06-10 18:26:33
回答 2查看 368关注 0票数 0

我使用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">
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-11 03:04:43

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
EN

Stack Overflow用户

发布于 2019-06-10 18:49:47

this开始,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 %>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56524581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档