Rails: ActionController::InvalidAuthenticityToken 添加图片时
Rails: ActionController::InvalidAuthenticityToken when adding a Image
我是 Ruby-on-rails 的新手,我目前正在从事一个让用户登录以添加、创建更新删除 Marvel 角色的项目。每个角色都有名字、描述、起源、联盟和形象。
我使用 Carrierwave 进行文件上传。
我使用了 scaffold 命令并且一切正常,直到我决定能够使用 .js.erb 文件在同一页面上创建和更新我的角色,而不必将用户重定向到 2 个不同的创建和更新的页面。
每次尝试用图像创建角色时都会出现以下错误。当我不添加图像时一切正常:
ActionController::InvalidAuthenticityToken
我知道论坛上已经提出了一些不同的其他类似问题,但我似乎找不到问题的答案。
我正在使用 Rails 4.2.6。
我尝试添加 gem 遥控部件,但它没有解决我的问题。
创建。js.erb代码:
$("#characters").append("<%= escape_javascript(render @character)%>");
在控制器中创建动作:
def create
@character = Character.new(character_params)
respond_to do |format|
if @character.save
format.html { redirect_to @character, notice: 'Character was successfully created.' }
format.json { render :show, status: :created, location: @character }
format.js
else
format.html { render :new }
format.json { render json: @character.errors, status: :unprocessable_entity }
end
end
结束
希望我能提供足够的信息,在此先感谢!
编辑:
这是我在 form.html.erb 中让用户添加图像的代码:
<div class="field">
<%= f.label :image %>
<%= f.file_field :image %>
<% if f.object.image %>
<%= image_tag f.object.image.url %>
<!--<%= f.label :remove_image %>
<%= f.check_box :remove_image %> -->
<% end %>
</div>
我认为您的 Rails 表单现在不会呈现表单中的 CSRF 字段:
<%= form_for @character, :remote => true, :authenticity_token => true,:multipart => true do |f| %>
.....
<% end %>
skip_before_action :verify_authenticity_token
将其放入您的控制器
我是 Ruby-on-rails 的新手,我目前正在从事一个让用户登录以添加、创建更新删除 Marvel 角色的项目。每个角色都有名字、描述、起源、联盟和形象。 我使用 Carrierwave 进行文件上传。
我使用了 scaffold 命令并且一切正常,直到我决定能够使用 .js.erb 文件在同一页面上创建和更新我的角色,而不必将用户重定向到 2 个不同的创建和更新的页面。
每次尝试用图像创建角色时都会出现以下错误。当我不添加图像时一切正常: ActionController::InvalidAuthenticityToken
我知道论坛上已经提出了一些不同的其他类似问题,但我似乎找不到问题的答案。
我正在使用 Rails 4.2.6。 我尝试添加 gem 遥控部件,但它没有解决我的问题。
创建。js.erb代码:
$("#characters").append("<%= escape_javascript(render @character)%>");
在控制器中创建动作:
def create
@character = Character.new(character_params)
respond_to do |format|
if @character.save
format.html { redirect_to @character, notice: 'Character was successfully created.' }
format.json { render :show, status: :created, location: @character }
format.js
else
format.html { render :new }
format.json { render json: @character.errors, status: :unprocessable_entity }
end
end
结束
希望我能提供足够的信息,在此先感谢!
编辑:
这是我在 form.html.erb 中让用户添加图像的代码:
<div class="field">
<%= f.label :image %>
<%= f.file_field :image %>
<% if f.object.image %>
<%= image_tag f.object.image.url %>
<!--<%= f.label :remove_image %>
<%= f.check_box :remove_image %> -->
<% end %>
</div>
我认为您的 Rails 表单现在不会呈现表单中的 CSRF 字段:
<%= form_for @character, :remote => true, :authenticity_token => true,:multipart => true do |f| %>
.....
<% end %>
skip_before_action :verify_authenticity_token
将其放入您的控制器