可以使用在render
方法:object
或:collection
選項提交一個變量的部分。 :object
選項將單個對象傳遞給可包含任何內容的部分。 :collection
選項用於傳遞必須來自相同的Class
的對象數組。
例如你有你的@post並將其傳遞給部分這樣
<%= render :partial => 'layouts/my_partial', :object => @post, :as => :my_local_var %>
然後你就可以通過調用部分my_local_var
訪問對象。使用:collection
稍有不同,但您可以在此自行閱讀:http://guides.rubyonrails.org/layouts_and_rendering.html
A由於路由名稱,問題將是不同類中的一個部分的使用。那麼你不能使用edit_modelname_path(@instance_var)
你必須在link_to
方法中使用路由Hash { :controller => params[:controller], :action => 'edit' }
!
//對於鏈接創建wihout params[:controller]
:
它只是一個想法,我沒有之前這樣做,但你可以試試這個,例如:
您呈現的部分,並使用:object => @instancevar, :as => :my_local_var
你可以使用下面的行動態鏈接創建:
<%= link_to "link text", { :controller => my_local_var.class.to_s.pluralize.downcase, :action => 'edit', :id => my_local_var.id } %>
然後你不依賴於params[:controller]
但可以鏈接到瓦爾編輯鏈接。
寫的部分和向它傳遞參數,將不是解決你的問題?只是谷歌傳遞參數,你應該沒問題 – aishwarya
真正的問題是路由助手,你怎麼做一個通用的「編輯這個」鏈接而不知道型號名稱? – Andrew