2009-10-30 83 views
0

我正在使用一些圖像裁剪的例子,我在網上找到,現在我感到困惑。在我的控制器中實際上沒有「裁剪」方法。相反(以下指導)我把幫助與軌道渲染動作與路由

render :action => 'cropping', :layout=> "admin" 

在我的創作方法。這使得頁面顯示爲cropping.html.erb。它工作正常,但我不知道如何鏈接或呈現該網頁,否則,就像我想直接點擊一個網址或按下一個按鈕來複製圖片一樣。我是否應該在我的控制器中創建一個裁剪方法,並通過路由將其連接起來,如果我希望能夠這樣做,或者我的視圖中有一種方法可以鏈接到呈現裁剪操作的相同位置?

對此感到困惑:)對第一版本的教程沒有幫助有一個裁剪方法,他刪除了它!爲什麼一種方法比另一種方法更好的任何解釋都會很好。謝謝!!

+1

我認爲你應該從一個更基本的教程開始,解釋什麼控制器和操作之前決定繞過它們。 – 2009-10-30 00:30:40

回答

0

要做到這一點的最佳方法取決於您打算如何使用裁剪模板以及相關的控制器邏輯。繼續之前,您會發現在render documentation上閱讀它很有用。

  • 如果您只打算使用裁剪模板的一種方法。使用與引用操作無關的相同控制器邏輯(如在;不是表單提交的一部分)。那麼你應該定義一個新的行動和路線。這是你的,你是否希望創建一個名爲路線或只需添加一個新的資源定義在routes.rb中

    取決於你如何定義你的路線,你可以做一個link_to "Cropping", cropping_url

  • 如果你的選擇將在呈現模板之前從多個控制器渲染它們,每個控制器都需要不同的準備工作。

    render :template => 'path/template_name' 
    

    如果路徑是從TEMPLATE_ROOTRAILS_ROOT/app/views,除非另有規定)的相對路徑和模板名稱是沒有結尾的文件名.html.erb /的.rhtml

  • 如果你想渲染裁剪爲作爲另一種觀點的一部分,你可以使它成爲一個部分。

    要使其成爲部分,只需將文件重命名爲'_cropping.html.erb'即可。現在它可以從任何視圖調用

    <%=render :partial => 'path/partial_name' %> 
    

    再次,路徑是TEMPLATE_ROOT相對於您的部分路徑。 partial_name是部分的文件名,省略了前導下劃線和尾部.html.erb或.rhtml。

注意:在任何一種涉及到模板路徑的解決方案中,如果呼叫控制器匹配路徑,路徑可以省略。即:如果模板路徑是從UsersController調用的'users/cropping.html.erb'。

0

在你的情況下,你通常會命名文件create.html.erb,這是rails默認查找文件的地方。編寫代碼,如:

渲染:行動=>「視圖名」

,如果你想呈現在一種情況下一個文件,一個不同的另一種通常發生。