【问题标题】:Additional fields in form表单中的附加字段
【发布时间】:2012-01-31 18:04:24
【问题描述】:

我有 2 个脚手架 Role(name:string),Permission(name:string) 我在它们之间创建了一个关系。所以现在我可以用一种简单的方式显示角色的权限:Role.permissions。

问题是为新角色创建一个表单,因为除了字段“名称”之外,我还想添加一个权限列表(复选框)。

这就是我到目前为止所做的。 (现在我使用的是文本框而不是复选框)

<%= form_for(@role)  do |f| %>
  <% if @role.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@role.errors.count, "error") %> prohibited this role from being saved:</h2>

      <ul>
      <% @role.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>

  <div class="list_of_fields">
    <div class="field">
      <%= text_field_tag :myVariable] %>
    </div>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

我说的正是这段代码:

  <div class="list_of_fields">
    <div class="field">
      <%= text_field_tag :myVariable] %>
    </div>
  </div>

这会产生:

参数:{"utf8"=>"â", "authenticity_token"=>"MdS0VkLAxGoZM8P71H0a9M54CpMt8DnnwSp75UVGtqE=", "role"= {"name"=>"abc"}, "myVariable"=>"xyz", "commit"=>"创建角色"}

我不喜欢这种解决方案,因为如果有人选择特定的权限名称,它可能会失败(例如“提交”)。

我想关闭哈希中的所有这些附加字段。这样做的正确方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1


    【解决方案1】:

    看看 Railscast 189 - embedded association。 Ryan 解决了您在这里想要做的事情。它有点旧,并且使用嵌入在用户模型中的角色,但您应该能够适应它。

    此外,您可以考虑将 cancan 用于基于角色的权限 (railscast here)

    【讨论】:

      猜你喜欢
      • 2012-01-11
      • 2017-09-29
      • 2010-11-03
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-29
      • 2017-10-04
      相关资源
      最近更新 更多