Ответ 1
Отредактировано для изменений в вашем вопросе. Однако ничего не меняется. Вы думаете о том, что неправильно, и вам нужно настроить, как вы думаете. Вам не нужно альтернативное шоу, вам нужно обработать запрос format.js.
Частичное должно быть представлено в ответе JavaScript, а не в контроллере. Контроллер выглядит примерно так:
def create
@task = Task.new(params[:task])
respond_to do |format|
if @task.save
format.html { redirect_to @task, notice: 'Task was successfully created.' }
format.json { render json: @task, status: :created, location: @task }
format.js
else
format.html { render action: "new" }
format.json { render json: @task.errors, status: :unprocessable_entity }
format.js
end
end
end
Затем в представлении /tasks/create.js.coffee
($ '#mytable').append("<%= j render(partial: 'tasks/newly_added', locals: { t: @task }) %>")
Что здесь происходит, браузер обращается к create.js
. Контроллер отвечает шаблоном create.js
из-за блока respond_to
format.js
. j
выводит содержимое файла _newly_added.html.erb
, а его содержимое добавляется в таблицу. Контроллер не взаимодействует с существующим представлением, вместо этого JavaScript отправляется в браузер и взаимодействует с ним.
Все это немного изменится, если вы используете MVC-среду на стороне клиента, например Backbone или Ember, но вы не указали, что я предполагаю, что вы собираетесь с Rails-ресурсами.