2013-05-02 44 views
0

我有一個問題讓渲染的工作,我的路徑是Rails的渲染,它並不顯示的網址與以前

/dashboard/models/new 

如果驗證失敗,它應該呈現使用網頁

render :new 

,但URL改變

/models/new 

如果沒有適當的佈局。使用

render :new, :layout => 'dashboard' 

帶來了佈局,但不是路徑。

我的routes.rb

match '/dashboard' => 'home#dashboard', as: :dashboard_home 
scope '/dashboard' do 
    resources :models, only: :new 
end 
root :to => 'home#index' 

任何一個可以幫助我? 在此先感謝


我的控制器有大量的代碼,使這部分:

if model.save 
    redirect_to "/dashboard/#{@model_type.to_s.downcase}s" 
else 
    flash.now[:error] = model.error.messages[:title] 
    render :new, :layout => "dashboard" 
end 
+0

請問您可以發佈您的控制器代碼嗎? – 2013-05-02 08:09:50

+0

@Alex,我用我的代碼的那部分編輯它 – 2013-05-02 08:59:43

回答

0

您可以嘗試使用命名空間來代替。

您路由文件看起來像這樣

namespace :dashboard do 
    resources :models, :only => :new 
end 

和標籤的form_for你應該送命名空間像這樣

<%= form_for [:dashboard, @model] do |f| %> 

不知道這是回答你的問題。

+0

我試過你的代碼船,但我無法使它工作,可能是我自己缺乏理解。它說沒有不變的名爲儀表板。 – 2013-05-02 09:13:45

+0

對不起,我忘了告訴你,你的控制器應該在controllers/dashboard/models_controller.rb中,並命名爲Dashboard :: ModelsController – 2013-05-02 18:47:07