rails4中的ActionController :: InvalidAuthenticityToken

时间:2015-03-18 10:48:27

标签: jquery ruby-on-rails ruby-on-rails-4 file-upload

_form.html.erb

<%= simple_form_for(@activity,:remote=>true, html: {multipart: true}) do |f| %>
    <div class="form-inputs">
      <%= f.input :name %>

    <%= f.input :logo%>
    </div>

    <div class="form-actions">
      <%= f.button :submit %>
    </div>
<% end %>

create.js.erb

$(document).ready(function(){
<%if @activity.save %>
$('#divShow').html("<%= j (render 'activities/index') %>");
$('#myModal').modal('hide');
$('#notice').html("Activities is successfully created.").show();
<%else%>
$('.modal-body').html("<%= j (render 'activities/form') %>");
<%end%>
});

activities_controller

def create
@activity = Activity.new(activity_params)
@activity.save
end

logs

  

ActivitiesController处理#create as HTML

     

参数:{“utf8”=&gt;“✓”,“activity”=&gt; {“name”=&gt;“sds”,   “标志”=&GT;#,   @ original_filename =“1241112.png”,@ content_type =“image / png”,   @ headers =“Content-Disposition:form-data; name = \”activity [logo] \“;   filename = \“1241112.png \”\ r \ nConContent-Type:image / png \ r \ n“&gt;},   “commit”=&gt;“创建活动”}

     

无法验证CSRF令牌真实性

     

在1毫秒内完成422个不可处理的实体

     

的ActionController :: InvalidAuthenticityToken

在视图页面中,我使用了simple_form gem和CURD操作。但是,我在创建新记录时从文件上传(:徽标)中收到错误。请帮助我,谢谢。

2 个答案:

答案 0 :(得分:1)

要在activities_controller.rb中解决这个问题,请将其放在顶部:

 skip_before_filter :verify_authenticity_token, :only => :create

您还必须定义模板,因此视图将是:

def create
  @activity = Activity.new(activity_params)
  respond_to do |format|
    if @activity.save(activity_params)
      format.js {}  
    else
      format.js {}  
    end
  end
end

答案 1 :(得分:0)

我正在使用gem "remotipart"来解决问题:

1.将gem "remotipart"添加到您的gemfile。

2.Run bundle exec rails g remotipart:install

3.将<%= javascript_include_tag :defaults %>添加到布局页面。

4.将//= require jquery.remotipart添加到application.js文件。