Дополнительные поля в форме - PullRequest
1 голос
/ 31 января 2012

У меня есть 2 помоста Роль (имя: строка), Разрешение (имя: строка) Я создал связь между ними.Так что теперь я могу отобразить разрешения Role простым способом: Role.permissions.

Проблема состоит в том, чтобы создать форму для новой роли, потому что в дополнение к полю 'name' я хотел бы добавить туда списокразрешений (флажки).

Это то, что мне удалось сделать до сих пор.(Теперь я использую текстовое поле вместо флажка)

<%= 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" => myVariable "=> myVariable">commit "=>" Создать роль "}

Мне не нравится это решение, потому что, если кто-то выберет определенное имя разрешения, оно может завершиться неудачей (например, 'commit').

Я хотел бы закрыть все эти дополнительные поля в хэше.Какой правильный способ сделать это?

1 Ответ

2 голосов
/ 31 января 2012

Взгляните на Railscast 189 - встраиваемая ассоциация .Райан занимается именно тем, что вы собираетесь здесь делать.Он немного староват и использует роли, встроенные в пользовательскую модель, но вы должны иметь возможность его адаптировать.

Кроме того, вы можете рассмотреть возможность использования cancan для полномочий на основе ролей (railscast здесь )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...