使用rails中的simple_form和AJAX解析JSON错误

时间:2013-03-16 01:14:08

标签: ruby-on-rails ajax json forms simple-form

我有一个使用Simple Forms和remote =>的表单。用户仪表板上的true(由仪表板视图和仪表板控制器处理)。该表单允许用户添加自定义游戏规则;但是,它通过Jquery的.load()函数加载表单。表单从“规则”视图加载(由规则控制器处理)。

当用户点击提交按钮时,我没有收到任何错误验证。

她是规则控制器上的创建操作:

def create
  @rule = Rule.new(params[:rule])

  respond_to do |format|
    if @rule.save
      format.html { redirect_to dashboard_path, notice: 'Rule was successfully created.' }
      format.json { render json: @rule, status: :created, location: @rule }
      format.js
    else
      format.html { render template: 'dashboard/index'}
      format.json { render json: @rule.errors, status: :unprocessable_entity }
      format.js
    end
  end
end

我的视图文件夹中有一个名为create.js.erb的js文件,该文件当前为空。我想我必须以某种方式解析这个create.js.erb文件中的JSON错误数据,但我不知道该怎么做。

此外,Dashboard视图/控制器调用此表单是否重要,但表单是由规则控制器处理的?

1 个答案:

答案 0 :(得分:4)

在create.js.erb

中尝试以下操作
$('.error-messages').remove();
<% if @rule.errors.any? %>
  $('body').append('<ul class="error-messages"></ul>');
  <% @rule.errors.full_messages.each do |msg| %>
    $('.error-messages').append('<%= escape_javascript msg %>');
  <% end %>
<% end %>

这会将错误附加到您的正文标记中。