找不到rjs文件

时间:2011-09-29 06:01:17

标签: ruby-on-rails ruby ajax rjs

我正在使用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])
end

edit.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文件。为什么会这样?有人可以解释一下吗?

3 个答案:

答案 0 :(得分:1)

将文件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' %> 

如果以上不起作用,您也可以尝试“发布”

答案 1 :(得分:1)

您应该对控制器方法进行以下更改:

respond_to do |format|    
      format.js      
end

这样它就会找到edit.js.rj并渲染它。

编辑:404 HTTP状态是主要问题,因为缺少路线。

匹配场地/:id / edit的路线应解决问题。

答案 2 :(得分:0)

将edit.js.rjs重命名为edit.js.erb

将以下内容添加到编辑方法的末尾:

respond_to do |format|
  format.js
  format.html
end

重启服务器