2012-01-31 84 views
1

我有2個腳手架角色(名稱:字符串),權限(名稱:字符串)我創建了它們之間的關係。所以現在我可以以一種簡單的方式顯示角色的權限: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「=>創建角色「}

我不喜歡這個解決方案,因爲如果某人選擇了特定的權限名稱,它可能會失敗(例如'commit')。

我想關閉散列中的所有這些附加字段。什麼是正確的方法來做到這一點?

回答

2

看看Railscast 189 - embedded association。瑞恩正確地處理你在這裏要做的事情。這有點舊,它使用嵌入在用戶模型中的角色,但你應該能夠適應它。

此外,您可以考慮使用cancan作爲基於角色的權限(railscast here

相關問題