【发布时间】:2015-05-21 02:45:42
【问题描述】:
在_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:
ActivityController 处理#create as HTML
参数:{"utf8"=>"✓", "activity"=>{"name"=>"sds", “标志”=>#, @original_filename="1241112.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"activity[logo]\"; filename=\"1241112.png\"\r\nContent-Type: image/png\r\n">}, “提交”=>“创建活动”}
无法验证 CSRF 令牌的真实性
在 1 毫秒内完成 422 个不可处理的实体
ActionController::InvalidAuthenticityToken
在视图页面中,我正在使用simple_form gem 和 CURD 操作与 JS。但是,我在创建新记录时收到文件上传错误(:logo)。请帮帮我,谢谢。
【问题讨论】:
-
尝试将
protect_from_forgery with: :null_session, :if => Proc.new { |c| c.request.format == 'application/json' }添加到您的applicationscontroller -
这是一个
Proc默认可用的类,你可以调用是作为过程 -
在你的控制器创建方法中,你可以指定
respond_to do |format| format.js } end -
并在视图中添加文件
create.js -
我在
respond_to do |format|中得到ActionController::UnknownFormat并且我已经有create.js.erb文件...请参见上文
标签: jquery ruby-on-rails ruby-on-rails-4 file-upload