2013-03-16 45 views
1

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

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

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

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错误数据,但我不知道该怎么做。

此外,这种形式是由仪表板视图/控制器调用,但表格正在由规则控制器处理吗?

回答

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 %> 

这会在你的身体标记追加错误。

+0

太棒了!非常感谢 – 2013-03-16 20:54:43