0

RoR 假人在这里,所以请放轻松。我正在遍历实用程序对象的集合,并且对于每个对象,我都希望有一个“编辑”链接,当单击该链接时,会呈现一个包含该账单的特定编辑信息的部分。

我想渲染一个部分并将 u.id 参数传递给该部分,以便我可以显示特定于实用程序的信息。请记住,我不擅长 Rails,我该如何做到这一点?我正在处理的视图是 users#show 中的部分 render_uts。谢谢!

编辑:我几乎让它工作。部分在点击时呈现。但我不知道如何将 u.id 或任何参数传递给部分。

显示.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") 是我的占位符。)

4

2 回答 2

0

首先,在您的 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 %>

然后你应该在你的表演动作中找到实用程序

def show
  @utility = Utility.find(params[:id])
end

在你的 partial(_utilEdit.html.erb) 你应该这样写:

<%= utility.name %>

在 show.js.erb 你应该通过@utility:

$("#editUtil").prepend('<%= escape_javascript(render :partial => 'utilEdit', :locals => {:utility => @utility}) %>');

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

于 2013-01-07T20:24:35.067 回答
0

我实际上不明白你想要什么假设你想编辑实用程序,因为它是你可以使用的成员路由edit_utility_path(u) 或者你想在同一个 UI 中渲染部分,你可以像本地人一样传递<%= render :partial=>"...",:locals=>{"utility_id"=>u.id} %>,或者你可以将对象作为选项传递参考rails docs

于 2013-01-07T05:30:51.613 回答