這樣的模式:如何創建顯示模型?
create_table "user_accounts", :force => true do |t|
t.string "code"
t.string "user_name"
t.integer "user_type", :default => 1
end
控制器的這樣的代碼:
def index
@user_accounts = UserAccount.all
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @user_accounts }
format.xml { render :xml => @user_accounts }
end
end
視圖的代碼是這樣的:
<table>
<tr>
<th><%= t :code %></th>
<th><%= t :user_name %></th>
<th><%= t :user_type %></th>
<th></th>
<th></th>
<th></th>
</tr>
<% @user_accounts.each do |user_account| %>
<tr class="<%= cycle('list_line_odd', 'list_line_even') %>">
<td><%= user_account.code %></td>
<td><%= user_account.user_name %></td>
<td><%= user_account.user_type %></td>
<td><%= link_to 'Show', user_account %></td>
<td><%= link_to 'Edit', edit_user_account_path(user_account) %></td>
<td><%= link_to 'Destroy', user_account, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>
,一切工作正常。但是有一個缺陷就是'user_type'顯示爲一個數字。但我希望它可以像'普通用戶'或'系統管理員'那樣顯示爲字符串。
我不想在視圖中添加任何邏輯(index.html.erb)的最重要的事情。
所以我需要的是改變控制器或任何地方的user_type的值。
必須有一些優雅的方式來做到這一點。但我不知道,希望你們能給我一些建議。謝謝!
你不想在視圖中甚至功能,將參與用戶類型並返回相應的stirng? – Zakaria
是的,我不想在視圖中添加任何邏輯。對於MVC的最佳實踐,View應該是無邏輯的。所以我希望它可以發生在控制器或模型層。 – LeoShi
在這種情況下,使用視圖幫助器類將是適當的。將'視圖相關的表示邏輯'推入模型類並不總是理想的 - 這就是幫助者存在於rails中的原因。使用助手類是否開放? –