2011-11-23 53 views
0

我有一個鏈接,我希望用戶按,它會去缺席對象內的自定義視圖(new.worker.html.erb)如何做到這一點?如何redirect_to自定義html文件

我現在有一個的link_to我的控制器內的方法叫做渲染的檢查用戶的會話staff_type決定在哪裏,用戶應該被重定向到

編輯:由評論者的答案是調用指出相關負責人在你的link_to你的觀點,然後進行了正確的檢查使控制器內像這樣:

if session[:user].staff_type == 3 
     render "new_worker" 

它指向new_worker視圖相關視圖內

回答

0

好了,所以,不同的工作人員不同的員工類型,對不對?工人就是其中之一?

我可能會做的是在你的員工控制器中,在展示中 - 當我看着一個特定的員工具有特定的staff_type時,我認爲你想渲染一個不同的模板的地方是 - 找到工作人員,然後查看他們的:staff_type屬性,並執行if或case來渲染相應的部分。

def show 
    @staff = Staff.find(params[:id]) 

    case @staff.staff_type 
    when "worker" 
    render :action => "show", :layout => "worker" 
    else 
    #other options 
    end 
end 

以上呈現show操作(傳遞這些變量),但與自定義佈局稱爲工人。

或者,代替如上述渲染,我建議使用相同的骨架,然後渲染爲每個不同類型的人員不同的部分,使用該渲染:

render :partial => "worker", :object => @staff 

在這種情況下,視圖http://rails.rubyonrails.org/classes/ActionController/Base.html#M000464

您可以使用上述任何控制器動作,真正做到:將可能_worker.rhtml

見信息在這裏調用。但是你需要在控制器中這樣做,否則重新組織你的資源。

0

這是一點也不清楚,給我們更多的信息,缺席,員工類型,工作人員?你有這些東西的路線,資源和控制器嗎,它們是通過關係鏈接的嗎?

基本的答案是:使用導軌,爲了呈現模板,您需要一個控制器和一條路徑來訪問控制器。然後快速redirect_to new_worker_path應該工作

編輯: 路由指向的行動,這使視圖(或其他HTTP響應,如redirect_to的)。

Rails(我猜你是2.3.11),是一個REST,面向資源的框架。恕我直言,你應該保留這一點,並重定向到new_absence_path,如果你想爲一個staff_type有不同的模板,你可以添加一個參數到你的鏈接:type=>'worker'並在你的控制器中使用它來渲染一個特定的模板。

不是最佳實踐方式,是創建一條路線和一個動作。 鋼軌2.3.11

map.resources :staff, :member => {:new_worker => :get}

然後在你的員工控制器定義:

def new_worker 
    ... 
    render 'new.worker' 
end 
+0

缺席是一個生成的腳手架,職員類型是我的其他腳手架稱爲工作人員,他們連接在一起(缺勤和工作人員)屬性,工人是一個視圖我想渲染一個特定的職員類型我使用map.resources :staffs和map.resources:缺席我的routes.rb我將如何添加一個新的路線指向一個特定的視圖? – arcanine

+0

好吧,讓我們嘗試以我擁有的正確方式進行操作: <%= link_to'Absences',:controller =>「absences」,:action =>「show」,:type =>'worker'%> 控制器端可以檢測類型worker屬性並使用它將用戶發送到正確的視圖? – arcanine

+0

看看由Rails設置的params變量,它嵌入了關於請求的信息。 – Elmatou