Rails ajax在成功时更新UI

时间:2014-10-30 08:47:19

标签: ruby-on-rails ajax

我有一个简单的帖子页面,用户可以在其中创建一个新帖子 - 表单是ajax(我正在使用turbolinks)。

  • ajax成功后,更新UI的 Rails方式是什么?

我认为这是我的选择:

  1. 当ajax:success fires

  2. 时,使用javascript重新加载页面
  3. 在Rails控制器中,将新帖子作为json返回。然后在ajax:成功我需要以某种方式创建一个模板

  4. 例如:

    $("<div id='new-post'>").html(ajaxResult)
    code to append the div to my posts
    
    • 这或多或少是这样做的吗? (我不会在这里使用ember或angular)
    • 是否有理由选择第一个或第二个选项?

2 个答案:

答案 0 :(得分:1)

您可以选择将新发送为js并使用rails

将其添加到div模板的option2

例如:

<强> _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

答案 1 :(得分: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模板系统的smth,并根据你的JSON轻松创建js模板