渲染部分(自定义到集合中的特定项目)上点击*编辑*如何传递参数



我是个笨蛋,所以请对我宽容一点。我正在迭代一组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

中找到utility
def 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}) %>');

阅读有关局部变量和局部变量的更多信息:局部变量

相关内容

  • 没有找到相关文章

最新更新