可以使用在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