現在我在rails中構建一個項目管理應用程序,下面是一些背景信息:如何將邏輯添加到視圖? Ruby on Rails
現在我有2個模型,一個是User,另一個是Client。客戶和用戶有一個一對一的關係(客戶端 - > HAS_ONE和用戶 - > belongs_to的,這意味着外鍵它在用戶表)
所以我想要做的,一旦你添加它的客戶端實際上可以向該客戶端添加憑據(添加用戶),爲了這樣做,所有客戶端都會顯示帶有該客戶端名稱旁邊的鏈接,這意味着您實際上可以爲該客戶端創建憑據。
我不知道該怎麼辦,如果你真的在數據庫中有證書(這意味着在你的客戶端ID的用戶表中有記錄),那麼不要顯示該鏈接。
這裏就是我認爲會工作
<% for client in @client%>
<h5>
<h4><%= client.id %></h4>
<a href="/clients/<%= client.id %>"><%= client.name %></a>
<% for user in @user %>
<% if user.client_id = client.id %>
<a href="/clients/<%= client.id %>/user/new">Credentials</a>
<%end%>
<% end %>
</h5>
<% end %>
而這裏的控制器:
def index
@client = Client.find_all_by_admin(0)
@user = User.find(:all)
end
而是它只是把該鏈接的數量乘以每個記錄在user表中。任何幫助?
你確定問題不僅僅是你使用賦值'='而不是測試相等'=='嗎? if user.client_id == client.id而不是if user.client_id = client.id – 2010-06-11 18:52:59
現在我正在努力處理另一個問題......我目前添加的憑證沒有真正進入「show」方法而是使用以下方式將client_id傳遞給用戶模型: <%= link_to「憑證」, {:controller =>'user',:action =>'new',:client_id => client.id}%> 將所有內容添加到用戶控制器的正確方法是什麼? 如果我使用@user = User.new(:user)它將不會加載client_id ,如果我使用@user = User.new(:client_id => params [:client])將不會加載它。 – Gotjosh 2010-06-11 19:14:17
你應該像這樣創建用戶:'User.new(:client_id => params [:client_id])' – 2010-06-11 20:07:47