Я новичок в Rails, и у меня возникла проблема, когда я не могу отобразить файл .js.erb. Я считаю, что корень проблемы заключается в том, что внутренний механизм маршрутизации Rails ожидает, что я буду называть и настраивать свои файлы именно так, но я пропускаю одну или две части, и я не уверен, как искать то, что нужно исправить ,Ошибка «Ошибка шаблона» при попытке визуализации файла js.erb
У меня есть вид HTML со ссылкой на действия контроллера:
<%# snip %>
<div id="holding_issues_list">
<%= link_to "Show issues on hold", {
:action => "show_user_issues",
:controller => "support",
:issue_type => "holding",
:user_id => @user.id },
:remote => true %>
</div>
<%# snip %>
Я думаю (но я не уверен), что :remote => true
вызывает ссылку, чтобы сделать вызов AJAX.
Это соответствующее действие контроллера в контроллер app/controllers/support_controller.rb
:
def show_user_issues
@target_div = params[:target_div] || "holding_issues_list"
user = User.find(params[:user_id])
issue_type = params[:issue_type]
#snip - set the value of @issues
end
Я хочу этот файл, названный show_user_issues.js.erb
и помещен в app/views/support
, чтобы быть вынесено при выходе контроллера:
$("#<%= @target_div %>").show();
alert('test');
$("#<%= @target_div %>").html(
"<%= escape_javascript render :partial => '_show_user_issues', :locals => {:target_div => @target_div, :issues => @issues} %>");
Это app/views/support/_show_user_issues.html.erb
, частичное я хочу show_user_issues.js.erb
для визуализации:
<% for issue in @active_issues %>
<div id="issue_<%= issue.id %>_display">
<%= render :partial => 'show_issue_mini', :locals => {:issue => issue} %>
</div>
<% end %>
Когда я попытаюсь щелкнуть ссылку в своем исходном HTML-представлении, ничего не происходит. Когда я открываю его в новой вкладке, я получаю сообщение об ошибке:
Шаблон недостающую
Отсутствует поддержка шаблонов/show_user_issues, приложение/show_user_issues с {: локаль => [: EN] : handlers => [: builder,: erb],: formats => [: html]}. Искал в: * "/ главная/<>/приложение/просмотров" * "/ главная/<> /gems/kaminari-0.14.1/app/views"
alert('test')
, что я вложил в show_user_issues.js.erb
не отображается, так что я думаю, что Rails получает повесил на рендеринг этого файла - то есть механизм маршрутизации не может его найти. Как я могу исправить эту проблему?
P.S. Я дважды проверил, что я ввел все имена файлов точно так же, как они находятся в базе кода.
Думаю, я пропустил эти моменты после того, как увидел, что вам не хватает части формата. :) –
@ManojMonga Все в порядке. Часть format.js была самой большой вещью, которую мне не хватало - после этого я смог быстро понять остальное. Я просто хочу оставить это здесь, если у кого-то будут подобные проблемы в будущем. Спасибо за вашу помощь! =) – Kevin
Основная цель этого форума - помочь всем, кто наткнулся на него, следовательно, вы получите +1 на этот ответ;) Кстати, пожалуйста! –