ruby-on-rails - 如何使用删除功能向用户隐藏数据
问题描述
我正在创建 rails 产品控制器来隐藏产品而不使用布尔值删除用户网格面板,但我尝试了很多次,它不起作用。我只是显示我的代码..请帮助我丢失的地方...
我正在使用 ruby 2.4.1,rails 5.3.2 请帮助我。
铁路路线是,
post 'products/hide', to: 'products#hide'
产品控制器功能是,
def hide
@product = Product.find(params[:id])
@product.hidden = true
flash[:notice] = 'you have successfully hide your product'
redirect_to suppliers_index_path
end
视图形式是,
<%= link_to 'delete', product, method: :hide, data: { confirm:
"Are you sure hide this #{product.Product_name} ?" } %>
产品表迁移是
class AddHiddenToProducts < ActiveRecord::Migration[5.2]
def change
add_column :products, :hidden, :boolean, :default => false
end
end
请帮助解决这个问题。
解决方案
method
传递给call的键link_to
没有定义控制器方法,而是 HTTP 方法,所以实际上应该:post
是。您可以通过设置正确的路径/http 方法来指定控制器方法。您可以通过以下方式实现您的目标:
<%= link_to 'delete', { controller: products, action: :hide, id: product }, method: :post, data: { confirm: "Your confirmation" } %>
但我会走得更远一点,并提供正确的命名路线,假设你resources :products
在你的某个地方routes
:
resources :products do
member do
post :hide
end
end
在您看来:
<%= link_to 'delete', [:hide, product], method: :post, data: { confirm: "Confirmation text" } %>
推荐阅读
- java - 在spring boot应用程序中从自己的rest api调用另一个rest api
- javascript - 这里的地图 - 只获取最后一组数据:
- c - 当目标字符串数组太小时,strcat 函数仍然有效
- javascript - TF.js 中两台机器的运行时差异
- shopify - 如何从销售渠道创建订单并将用户重定向到 Shopify 商店进行付款?
- javascript - Electron 将我的应用数据存储在“userData”路径中
- python-3.x - numba 在重塑 numpy 数组时出错
- c# - 使用存储过程将数据插入 MySQL 数据库(超过 200 个字符)时遇到问题
- google-apps-script - 如何使用谷歌脚本将数组附加到谷歌工作表列
- build - ESP32 的 Zephyr hello world 应用程序失败