2012-08-17 57 views
1

在我的Rails 3應用程序中,我的'show'視圖呈現提交的表單。我想創建一個'信息'視圖,顯示來自同一個提交表單的不同數據。它基本上是一個備用表演視圖。如何在Rails 3中渲染交替顯示視圖?

我要把它放到我的控制器,但它不工作:

def show 
    @form = Form.find(params[:id]) 
    end 

    def info 
    @form = Form.find(params[:id]) 
    render :layout => 'info' 
    end 

它所做的就是顯示「顯示」視圖。我該如何糾正?

+0

這也許是奇怪的,不過你可以試試' render:layout =>「info」'佈局也不同於視圖。如果你在'UsersController'中執行'render'info''會渲染'app/views/users/info.html.erb',因爲'render layout =>「info」'會渲染'app/views/users/info.html.erb'與佈局'app/views/layouts/info.html.erb' – Max 2012-08-17 17:39:29

+0

我不遵循你想要做的事情。你有時想使用顯示視圖,有時想使用信息視圖。或者你完全取代秀節目? – 2012-08-17 17:42:56

+0

不能取代節目視圖...我希望能夠同時觀看兩個節目。 – user1429496 2012-08-17 17:56:16

回答

0

這個問題必須在別處,因爲這兩個行爲看起來不錯。在此示例中,您的show操作應使用show視圖,並且您的info操作應使用info視圖(儘管佈局也稱爲「信息」 - 您可能需要考慮重命名,以免混淆佈局和你的看法)。

你確定你的路線設置正確嗎?您是否爲您的Form模型設置了「信息」路線?即

的routes.rb:

resources :forms do 
    get :info 
end 

,並您導航到正確的網址是什麼? (在這種情況下,http:// yourhost/forms/123/info)?

+0

我嘗試了你的建議...沒有工作。我認爲問題的確在於路線。點擊'show'視圖可以看到:http:// localhost:3000/forms/4。是否可以點擊「信息」鏈接,轉到相同的地址,但只是查看數據不同? – user1429496 2012-08-17 18:03:09

+1

不,每個網址只有一個動作,你需要設置一個這樣的路線,然後鏈接到/ forms/4/info,嘗試form_info_path(表單)。 – mckeed 2012-08-17 18:07:56

+0

除了上面的評論,不僅是不可能的(沒有在別處指定某種開關),你*不應該那樣做。您希望您在URL中看到的數據表示是可預測的。如上所述,使用你的'info'動作。 – 2012-08-17 19:12:45

-1

您可以撥打

def info 
    @form = Form.find(params[:id]) 
    render :action => 'show' 
end 

,它會使用該信息的方法定義的@form實例變量,確保你有適當的路由設置