Rails best_in_place 无法处理的实体
Rails best_in_place Unprocessable Entity
我正在尝试使用 best_in_place gem 编辑模型的名称字段,以直接在线编辑项目。尝试这样做时,我收到错误 422 Unprocessable Entity。
我做了一些研究,发现在响应中,控制器不仅需要名称属性,还需要组和其他一些属性。
["Group must exist","Lumo can't be blank","Lumo is not a number"]
我已经以正确的方式设置了我的控制器(我认为)。
materials_controller.rb
def update
@material = Material.find(params[:id])
if params[:commit] == "Save" then
success = @material.update(material_params)
params[:create_pure_composition] = false
else
@material = Material.new(material_params)
@material.user_id = current_user.id
success = @material.save
end
respond_to do |format|
if success
plot1 = prepare_e_plot(@material)
plot2 = prepare_st_plot(@material)
format.html { redirect_to @material }
format.json { render json: { plot1: plot1, plot2: plot2, status: 200 } }
else
format.html { render 'edit' }
format.json { respond_with_bip(@material) }
end
end
end
best_in_place 有没有办法在更新名称属性时发送这些值?我试过 best_in_place.
的 params 属性
<%= best_in_place @material, :name, as: :input, params: { group_id: @material.group_id } %>
更新时没有发送任何额外的参数。
这是 Material 模型所关注的内容。
material.rb
class Material < ActiveRecord::Base
belongs_to :user
belongs_to :group
validates :name, presence: true, uniqueness: {scope: :user_id}
validates :lumo, presence: true, numericality: true
end
有人知道为什么它要求其他属性以及为什么 best_in_place 不发送这些属性吗?
我想出了问题是什么以及如何解决它。我们在编辑材料时使用“保存”或“另存为”选项。因此,在控制器中我们检查 params[:commit]
.
通过编辑 url,我能够在 params[:commit]
中发送 best_in_place 更新。 best_in_place 代码的结果如下:
<%= best_in_place @material, :name, as: :input, url: material_path(@material, commit: "Save") %>
我正在尝试使用 best_in_place gem 编辑模型的名称字段,以直接在线编辑项目。尝试这样做时,我收到错误 422 Unprocessable Entity。
我做了一些研究,发现在响应中,控制器不仅需要名称属性,还需要组和其他一些属性。
["Group must exist","Lumo can't be blank","Lumo is not a number"]
我已经以正确的方式设置了我的控制器(我认为)。
materials_controller.rb
def update
@material = Material.find(params[:id])
if params[:commit] == "Save" then
success = @material.update(material_params)
params[:create_pure_composition] = false
else
@material = Material.new(material_params)
@material.user_id = current_user.id
success = @material.save
end
respond_to do |format|
if success
plot1 = prepare_e_plot(@material)
plot2 = prepare_st_plot(@material)
format.html { redirect_to @material }
format.json { render json: { plot1: plot1, plot2: plot2, status: 200 } }
else
format.html { render 'edit' }
format.json { respond_with_bip(@material) }
end
end
end
best_in_place 有没有办法在更新名称属性时发送这些值?我试过 best_in_place.
的 params 属性<%= best_in_place @material, :name, as: :input, params: { group_id: @material.group_id } %>
更新时没有发送任何额外的参数。
这是 Material 模型所关注的内容。
material.rb
class Material < ActiveRecord::Base
belongs_to :user
belongs_to :group
validates :name, presence: true, uniqueness: {scope: :user_id}
validates :lumo, presence: true, numericality: true
end
有人知道为什么它要求其他属性以及为什么 best_in_place 不发送这些属性吗?
我想出了问题是什么以及如何解决它。我们在编辑材料时使用“保存”或“另存为”选项。因此,在控制器中我们检查 params[:commit]
.
通过编辑 url,我能够在 params[:commit]
中发送 best_in_place 更新。 best_in_place 代码的结果如下:
<%= best_in_place @material, :name, as: :input, url: material_path(@material, commit: "Save") %>