Визуализация частичного представления с помощью 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 2

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