Визуализация частичного представления с помощью ajax в Ruby on Rails
В настоящее время я пытаюсь сделать свое приложение rails одностраничным, но у меня возникли некоторые проблемы с рендерингом партиалов.. Теперь вот мой код контроллера:
class WelcomeController < ApplicationController
def create
@welcome = WelcomeController.new
render :partial => 'enjoy'
end
def index
if params[:id] == 'enjoy'
@partial_view = 'enjoy'
elsif params[:id] == 'about'
@partial_view = 'about'
else
@partial_view = 'main'
end
end
end
Итак, этот контроллер связан с моим представлением, и для изменения страниц я использовал код в действии index, но теперь я пытаюсь использовать эту вещь в действии create. Код моего индекса.формат html.slim, где я пытаюсь вызвать действие create, это:
div id="content"
= form_tag(:url => {:action => 'create'},
:update => "content", :position => :bottom,
:html => {:id => 'subject_form'},
:remote => true)
= submit_tag 'Add'
Итак, нажмите кнопку "Добавить", я ожидаю содержание от энджоя.тонкий.html, который является моим частичным, чтобы войти в div с идентификатором "content", но когда кнопка нажата и _enjoy.формат html.тонкий визуализируется он загружается поверх всего индекса.формат html.тонкая страница... Так что я застрял на этом, как я могу заставить его загрузиться в определенный div?
Огромное спасибо всем, у кого есть ответ на этот вопрос {:
2 ответа:
Контроллер:
class WelcomeController < ApplicationController def create @welcome = WelcomeController.new # Remove the render end def index # No change end end
Вид:
div id="content" = form_tag({:action => 'create'}, :id => 'subject_form', :remote => true) do = submit_tag 'Add'
Create welcome/создать.JS.erb и добавить к нему следующую строку:
$('#content').html("<%= j render(:partial => 'welcome/enjoy') %>")
Вы должны добавить файл
create.js.erb
в каталог представлений 'welcome' и там вы должны отрисовать частичный файл на ajax:$("#content").html("<%= j render(:partial => 'welcome/enjoy') %>");
И в действии create контроллера вы должны ответить на javascript:
def create ... respond_to do |format| format.js end end