2011-11-10 43 views
0

我想有一個頁面是一個完全成熟的頁面,即我可以用URL調用它,例如:全頁面/加局部模板

/path/to/client/33 

但我希望能夠調用/從另一個頁面即呈現它(僞代碼)

/path/to/customer/678 
...find client id..... 
render :client, :id => 33 #inside the customer page 
render :customer 

我知道我可以做到像部分,我想不通的是如何通過他們之間的參數。 我也在考慮佈局,但是我該如何安排客戶控制器先運行?以便我可以找到客戶端ID,然後呈現客戶端。 把客戶想象成一個「擁有」許多客戶的實體。

回答

0
# app/views/your_controller/_client.html.erb 
The Client is <%= client.name %> 

# app/views/your_controller/customer.html.erb 
The Customer is <%= @customer.name %> 
<%= render :partial => 'client', :locals => { :client => @client } %> 

# app/views/your_controller/client.html.erb 
<%= render :partial => 'client', :locals => { :client => @client } %> 

# your_controller.rb 
def customer 
    @customer = Customer.find(params[:id]) 
    @client = @customer.client 
end 

def client 
    @client = Client.find(params[:id]) 
    # i forget if you need to assign it client to make the partial work 
    client = @client 
end 
+0

thanx ...一個額外的問題雖然..我想通過client_id(和客戶端控制器來完成它的工作)而不是@client obj。 – user1019129

+0

我不遵循你的問題,但我會提供這個。一個好的設計原則是薄控制器,胖模型。如果你只是想傳遞客戶端ID而不是對象,那麼你可以修改上面的代碼來做到這一點。在視圖中,您將擁有<%= client_id%>,並且在控制器中將client_id設置爲params [:id]。祝你好運! – sorens

+0

thanx,讓我改述一下......我可以通過client_id,但是如果在客戶信息之前顯示客戶信息,我該如何強制客戶首先執行,以便它可以獲取信息OR將會發生,因爲我使用/ customer/333。將嘗試明天..10x – user1019129