Однострочные RJS-файлы Rails Ajax - PullRequest
1 голос
/ 26 марта 2011

Все, что я читаю о рельсах 3, и AJAX говорит, что у нас должно быть

respond_to do |format| 
   @wines = Wine.all(:conditions => {:category => "Sparkling"})
   format.js
end

, а затем отдельный файл js.erb,

$("wines").update("<%=  escape_javascript(render :partial => "sparkling")%>")

но этот однострочный файл js кажется немного экстремальным, могу ли я сделать что-то вроде этого:

respond_to do |format| 
   @wines = Wine.all(:conditions => {:category => "Sparkling"})
   format.js {render :js => '$("wines").update("<%=  escape_javascript(render :partial => "sparkling")%>"')}
end

и затем пропустите дополнительный файл .js.erb Проблема, которую я вижу здесь, заключается в двойном рендере (я нуб, поэтому я не уверен)? Каков наилучший способ сделать это?

1 Ответ

3 голосов
/ 26 марта 2011

Встроенный RJS - плохая практика, но вы можете использовать его так:

def your_action 
  @wines = Wine.all(:conditions => {:category => "Sparkling"})
  respond_to do |format| 
    format.js {render :update do |page|
      page << '$("wines").update("<%=  escape_javascript(render :partial => "sparkling")%>"')
    end}
  end
end

UPD

Нет, хранить еще один файл не глупо. Это делает ваши контроллеры чище. Смотри с your_action.js.erb

# your controller
def your_action 
  @wines = Wine.all(:conditions => {:category => "Sparkling"})
end
# your you_action.js.erb
$("wines").update("<%=  escape_javascript(render :partial => "sparkling")%>"

Это две строки вместо 6 :)

...