2014-10-30 3 views
0

У меня есть простая страница сообщений, где пользователи могут создавать новое сообщение - форма ajax (и я работаю с turbolinks).Rails ajax Обновление пользовательского интерфейса при успешном завершении

  • Что такое Rails путь обновления пользовательского интерфейса после того, как Ajax успешно?

Как я вижу здесь свои варианты:

  1. перезагрузить страницу с JavaScript, когда Ajax: успех пожары

  2. В контроллере Rails, вернуть новый пост в формате JSON. Тогда на Аякса: успех мне нужно каким-то образом создать шаблон

например:

$("<div id='new-post'>").html(ajaxResult) 
code to append the div to my posts 
  • Является ли это более или менее способ сделать это? (я не собираюсь использовать углы или углы здесь)
  • Любые причины, чтобы предпочесть первый или второй вариант?
+0

вариант 2, обновить его через рельсы – Debadatt

+0

люди используют handlebars.js для Do такие вещи или только тогда, когда это действительно сложный интерфейс? –

+0

для ваших целей рулевое управление слишком много :) –

ответ

1

Вы можете выбрать option2, отправляющие новый, как JS и добавить его в шаблон сНа с помощью рельсов

, например:

_form.html.erb

<%= form_for(@model), :html => {remote: true} do |f| %> 
     your input fields code here 

<% end %> 

контроллер.

def create 
    respond_to do |format| 
    if @model.save 
     format.js 
    else 
     render 'new' 
    end 
    end 

create.js.erb

$("#get_input").html(<%= j ({render :partial => "create"})%>) **#get_input is your div id** 

_create.html.erb

#write your template code here 
+0

Мне нравится, что я могу просто использовать мои частичные файлы таким образом, и мне не нужно строить html в моем javascript, если я правильно вас понимаю –

+0

@Joel_Blum для отображения частичных данные из ajax вам нужно добавить к некоторому элементу html. – anusha

+0

Да, все, что осталось, добавляет код добавления в create.js.erb. Я думаю, что это разумное решение, если вам не нужны какие-либо фантазии –

0

Есть много в пути вы можете сделать это :)

Для отл. Вы можете отправить не JSON, но JS просить

def some_action 
    respond_to do |format| 
    format.html 
    format.js 
    end 
end 

затем в вашем /views/../some_action.js.erb

$("<div id='new-post'>").html("<%=j({render here what you want}>") 

Или вы действительно можете обрабатывать JSON. Тогда вам нужно использовать л как системы https://github.com/netzpirat/haml_coffee_assets шаблонов и легко создавать JS шаблонов, основанные на вас JSON

Смежные вопросы