在使用ajax调用的rails控制器中渲染部分

时间:2014-06-28 07:24:48

标签: ruby-on-rails render

我有rails应用程序,其中我将部分视图视为部分视图,并且我将一些视图重新考虑为SPA。我有一个功能的问题。在一个地方,我在不调用控制器的情况下渲染部分,如下所示:

def create
      school_service.update_preview
      @user = get_user
      @result = prepare_result

      render 'school/result/show', locals: {
        pupil:       @user,
        result:      @result
      }
end

我正在使用表单调用此方法。现在我使用AJAX从JS调用它。是否可以以相同的方式呈现该视图?我不想将'school / result / show'重写为SPA。谢谢你的所有答案。

1 个答案:

答案 0 :(得分:1)

您的问题是I was calling this method using form. Now I call this using AJAX. Is it possible to render that view in the same way?

由于您正在使用AJAX,我假设您将拥有一些远程:在您的表单中为true:

<%= form_for(@user, remote: true) do |f| %>
  # your fields
<% end %>

这将带您进入控制器中的创建操作,您可以在控制器中设置 respond_to block 来处理您的js格式

def create
  @user = get_user
  @result = prepare_result
  respond_to do |format|
    format.js {}
  end
end

这将允许您在视图中包含 create.js.erb 文件,您可以在其中编写js以呈现部分

$(".your_parent_element_class").html("<%=j render partial: "school/result/show",locals:{pupil: @user, result: @result} %>")

有关详细信息,请结帐working with javascript in rails