【问题标题】:Render partial in rails controller called using ajax在使用 ajax 调用的 rails 控制器中渲染部分
【发布时间】:2014-08-19 07:40:36
【问题描述】:

我有 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 调用它。是否可以以相同的方式呈现该视图?我不想将“学校/结果/表演”重写为 SPA。谢谢大家的回答。

【问题讨论】:

  • 如果你不介意我问什么是 SPA?
  • 您缺少partial:
  • SPA - 单页应用
  • @user2239655 你只想从你的 ajax 渲染那个部分?
  • 如果可能的话,我不介意。我需要设置瞳孔和结果变量,我只能在服务器端执行此操作。

标签: ruby-on-rails render


【解决方案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,我假设您将有一些 remote: true 在您的表单中,例如:

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

这将带您进入控制器中的 create 操作,您可以在控制器中设置 respond_to 块来处理您的 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

【讨论】:

    猜你喜欢
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2021-10-16
    相关资源
    最近更新 更多