Мне нужна помощь в ответе от звонка AJAX. Вот что я хочу сделать:Rails: визуализировать HTML-код непосредственно с контроллера.
- Сделать вызов AJAX для моего приложения Rails, чтобы получить документ HTML.
- Внутри контроллера Rails читайте документ HTML с диска. Затем отправьте документ в представление, используя «render html: @htmldoc»
- Внутри представления у меня есть идентификатор тега «Урок» в div. Используя ответ от вызова AJAX, который имеет документ HTML, я помещал документ в тег «Lesson». Но HTML отображается как TEXTNODE с тегом «Lesson», в то время как мне нужно, чтобы он отображался как HTML.
Вот мой взгляд в new.html.erb:
<div id="lesson">
<h2>Choose a lesson on the left panel to start your study module.</h2>
</div>
<div>
<button type="button" class="btn btn-primary"id="btn_next">Next</button>
</div>
Вот мой AJAX вызов в new.html.erb:
$(document).ready(function(){
$("#btn_next").click(function(){
$.ajax({
type:'POST',
url:'/study',
data: { id: "demo.html" },
success:function(result){
$("#lesson").html(result);
}
});
});
});
Вот мой routes.rb:
get '/study', to: 'study_sessions#new'
post '/study', to: 'study_sessions#create'
Вот мой код внутри контроллера:
def create
@filename = params[:id]
@htmldoc = File.read("public/uploads/#{@filename}") if File.exist("public/uploads/#{@filename}")
render html: @htmldoc
end
Вот мой demo.html файл:
<table class="table table-striped">
<th>Head 1</th><th>Head 2</th>
<tr><td>Row 1</td><td>row 1</td></tr>
<tr><td>Row 2</td><td>row 2</td></tr>
</table>
Вот результат, когда я просматриваю браузер, прежде чем нажать кнопку:
Choose a lesson on the left panel to start your study module.
Вот результат после того, как я нажал на кнопку:
<table class="table table-striped"> <th>Head 1</th><th>Head 2</th<tr><td>Row 1</td><td>row 1</td></tr> <tr><td>Row 2</td><td>row 2</td></tr> </table>
Я бы ожидать, что файл demo.html будет оказана как хороший HTML таблицы, а не строка текста.
Большое спасибо за помощь всем!
Это рельсы 5 Я использую: – David
обновил ответ. – Shaunak