не находит файл rjs - PullRequest
       30

не находит файл rjs

0 голосов
/ 29 сентября 2011

Я использую рельсы 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 ]

1 голос
/ 29 сентября 2011

Вы должны внести следующие изменения в свой метод контроллера:

respond_to do |format|    
      format.js      
end

, чтобы он нашел файл edit.js.rjs и отобразил его.

Редактировать: 404 HTTP-статус, который был основной проблемой из-за отсутствующего маршрута.

Маршрут для сопоставления мест / / id / edit должен решить проблему.

1 голос
/ 29 сентября 2011

Переименуйте ваш файл 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', если выше не работает

0 голосов
/ 29 сентября 2011

переименуйте edit.js.rjs в edit.js.erb

Добавьте следующее в конец метода редактирования:

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

перезагрузите сервер

...