Rails - 使用从AJAX表单返回的JSON?

时间:2014-02-12 22:25:54

标签: jquery ruby-on-rails ajax json

我有一个Rails表单,在提交时会转到URL /evaluate并呈现一个JSON字符串。如何使此表单使用AJAX并返回要在当前页面上使用的值?

返回的值是什么格式,例如JSON,params?

注意:Sandie是一个API包装器。

/evaluate网址链接到控制器操作evaluate

def evaluate
  @code_lesson = CodeLesson.find(params[:code_lesson][:id])
  @language = Language.find(@code_lesson.language_id).slug
  @sandie = Sandie.new(language: @language)
  @code = @sandie.evaluate(code: params[:code_lesson][:user_code])
  render inline: "<%= @code.inspect %>"
end

表格是这样的:

<%= form_for @code_lesson, url: new_submission_path, 
                           method: :post, 
                           remote: true do |f| %>
  <%= f.hidden_field :user_code, value: '' %>
  <%= f.hidden_field :id, value: @code_lesson.id %>
  <%= f.submit "Submit Code", class: "btn btn-success", id: "submit-code" %>
<% end %>

如何呈现要在页面中使用的此操作的输出?

1 个答案:

答案 0 :(得分:0)

在这里,抓住link到Rails指南:使用JavaScript。您将为AJAX成功编写自己的JavaScript处理程序。文章提供了非常简单的例子:

$(document).ready ->
  $("#new_post").on("ajax:success", (e, data, status, xhr) ->
    $("#new_post").append xhr.responseText
  ).bind "ajax:error", (e, xhr, status, error) ->
    $("#new_post").append "<p>ERROR</p>"

如您所见,您的数据将传递给ajax:success处理程序。这是您要在页面上进行一些转换的地方。