我是个笨蛋,所以请对我宽容一点。我正在迭代一组Utility对象,对于每个对象,我都希望有一个"edit"链接,当单击该链接时,它会呈现一个包含该账单特定编辑信息的部分。
我想呈现一个局部,并将uid参数传递给该局部,这样我就可以显示特定于实用程序的信息。请记住,我并不擅长Rails,我该如何做到这一点呢?我正在工作的视图是用户#show中的部分render_uts。谢谢!
Edit:我几乎让它工作了。局部在单击时呈现。但是我不知道如何传递uid或任何参数给partial。
show.html.erb
<% @utilities.each do |u| %>
<%= link_to u.name, '/users/show', :remote => true %>
<% end %>
_utilEdit.html.erb
<%= Utility name should go here? %>
在我的用户控制器中的show方法的末尾:
respond_to do |format|
format.js
end
和show.js.erb:
$("#editUtil").prepend('<%= escape_javascript(render 'utilEdit') %>');
($("#editUtil")是我的占位符)
我不明白你到底想要什么假设你想编辑实用程序,因为它是成员路由,你可以使用edit_utility_path(u)
或者你想在相同的UI中渲染部分,你可以像<%= render :partial=>"...",:locals=>{"utility_id"=>u.id} %>
一样传递局部,或者你可以传递对象作为选项参考rails文档
首先,在show.html.erb中,您应该传递一个实用程序id来显示操作:
<% @utilities.each do |u| %>
<%= link_to u.name, utility_path(u), :remote => true %>
<!-- or if you have some strange routes -->
<%= link_to u.name, "/utilities/#{u.id}", :remote => true %>
<% end %>
那么你应该在show action
中找到utilitydef show
@utility = Utility.find(params[:id])
end
在你的部分(_utiedit .html.erb)中,你应该这样写:
<%= utility.name %>
在show.js.erb中你应该传递@utility:
$("#editUtil").prepend('<%= escape_javascript(render :partial => 'utilEdit', :locals => {:utility => @utility}) %>');
阅读有关局部变量和局部变量的更多信息:局部变量