我使用的是rails 2.3.8,我将使用名为_show_venue.html.erb的部分加载模式对话框。在这个部分中,我添加了link_to_remote来编辑每个会场。
_show_venue.html.erb ::
<table>
<tr>
<th>Country</th>
<th>Place</th>
<th>Color</th>
</tr>
<% @venues.each do |venue| %>
<tr>
<td><%=h venue.country_id %></td>
<td><%=h venue.place %></td>
<td><%=h venue.color %></td>
<td><%= link_to_remote 'Edit', :url => {:controller => 'venues', :action => 'edit', :id=>venue.id } %></td>
</tr>
<% end %>
</table>这是我的控制器代码::
def edit
@venue = Venue.find(params[:id])
endedit.js.rjs ::
page.replace_html 'edit_venue', :partial => 'edit_form'
page<< "$j ('#event_actions').dialog({
title: 'Edit venue
modal: true,
width: 500,
close: function(event, ui) { $j ('#event_actions').dialog('destroy') }
});"但是当我运行它的时候,它找不到edit.js.rjs文件。为什么会发生这种情况?有谁能解释一下吗?
发布于 2011-09-29 14:32:22
您应该对您的控制器方法进行以下更改:
respond_to do |format|
format.js
end这样它就会找到edit.js.rjs并呈现它。
编辑:404HTTP状态是主要问题所在,这是因为缺少路由。
匹配venues/:id/edit的路由应该可以解决这个问题。
发布于 2011-09-29 14:08:47
将文件edit.js.rjs重命名为edit.rjs
编辑过的
我认为你必须用另一种方式来做,因为你想要动态对象@venue,试试下面的
def edit
@venue = Venue.find(params[:id])
render :update do |page|
page.replace_html 'edit_venue', :partial => 'edit_form', :object => @venue
page<< "$j ('#event_actions').dialog({
title: 'Edit venue
modal: true,
width: 500,
close: function(event, ui) { $j ('#event_actions').dialog('destroy') }
});"
end
end您的链接应该如下所示,您必须编写:method
<%= link_to_remote 'Edit', :url => {:controller => 'venues', :action => 'edit', :id=>venue.id }, :method=>'put' %> 如果上面不起作用,你也可以尝试'post‘
发布于 2011-09-29 14:31:26
将edit.js.rjs重命名为edit.js.erb
将以下内容添加到编辑方法的末尾:
respond_to do |format|
format.js
format.html
end重新启动服务器
https://stackoverflow.com/questions/7593099
复制相似问题