2013-04-10 46 views

回答

1

控制器是處理來自瀏覽器的傳入請求並同時處理模型中的數據的事件處理程序。控制器將處理來自用戶交互的請求,即來自鼠標的鍵盤輸入或點擊事件。控制器的響應然後在視圖中輸出。因此,如果您想在index.html.erb中使用UserController,那麼在index.html.erb中有index動作,如果您想通過循環訪問這些users,則可能會進行某種類似的設置。

控制器

class UsersController < ApplicationController 
def index 
    @users = User.all #Returns an array of all users 

    respond_to do |format| 
    format.html { render "users/_users", :locals => { :users=> @user } }} 

    end 

Index.html.erb

<table> 
    <thead> 
    <tr> 
    <th>Name</th> 
    </tr> 
    </thead> 
    <tbody> 
    <% @users.each do |user| %> 
     <tr> 
     <td> user.name</td> 
     </tr> 
    <% end %> 
    </tbody> 
</table> 

更新:

好了,所以我覺得你的意思是發送一個局部變量,並在訪問它風景。除此之外,已知使用局部變量似乎是可取的,可以在應用範圍內使用局部變量來避免依賴性。所以如果是這種情況,並且你想通過局部變量進入局部變量,你可以使用:locals來保持它的清潔。例子如下:

render :partial => 'my_partial', :locals => { :some_variable => some_variable, :value=> 'value' } 

希望這清除東西

+0

因此,由於視圖可以訪問實例變量,它可以訪問控制器中的局部變量嗎?這是我的問題的主要觀點。 (我可能不擅長表達我的問題。) – ZeroNegOne 2013-04-10 02:54:49

+0

@ZeroNegOne查看我的更新 – David 2013-04-10 03:10:13

0

視圖是從Rails中控制器單獨的對象。控制器在渲染視圖時將其實例變量包含在視圖的上下文中。您應該認爲這是傳遞約定的特殊參數,而不是違反封裝(訪問控制器的私有變量的視圖)。 Rails使用這種約定避免將視圖的(片段)結構反映到從控制器傳遞到視圖的字段中。由於值以相對非結構化的方式從控制器傳遞到視圖,因此我們可以靈活地重構視圖,而不必對控制器進行太多更改。

相關問題