我試圖通過使用到歸檔Product
在Rails的5Rails的5 - 無法更新的link_to單個屬性,未定義的方法`to_sym」
視圖中的link_to
:
<% @products.each do |product| %>
<%= link_to product_path(product, "product[archived]" => true),
:method => :put,
data: { confirm: 'Sure?' } do %>
<i class="fa fa-archive color-danger" aria-hidden="true"></i>
<% end %>
<% end %>
但是點擊鏈接後,我的ProductsController
引發以下錯誤:
undefined method `to_sym' for {:archived=>false}:Hash Did you mean? to_s to_yaml to_set
錯誤指向if @product.update(product_params)
線。全面更新的方法是:
def update
@product = Product.find(params[:id])
puts @product.id
if @product.update(product_params)
redirect_to @product
else
render 'edit'
end
end
編輯
其實問題的行是我Product
模型寫的不好的驗證。
我有:validates_uniqueness_of :code, :scope => [:archived => false]
,它應該是validates_uniqueness_of :code, conditions: -> { where.not(archived: true) }
。
事後看來,這是一個愚蠢的錯誤,但現在我想知道爲什麼它被扔這樣一個奇怪的錯誤和糟糕的是,錯誤是在控制器 ...
你的路線上有什麼? –
@SebastiánPalma'資源:產品做 資源:product_prices 結束' – bplmp