我有一个invoices_controller,有资源路由.例如:

resources :invoices do
  resources :items, only: [:create, :destroy, :update]
end

现在,我想向发票添加一个发送功能,如何添加一个自定义路由作为invoices/:id/send,将请求发送到invoices#send_invoice,以及如何在视图中链接到它.

传统的rails方法是什么.谢谢

推荐答案

将此添加到您的路由中:

resources :invoices do
  post :send, on: :member
end

resources :invoices do
  member do
    post :send
  end
end

那么在你看来:

<%= button_to "Send Invoice", send_invoice_path(@invoice) %>

<%= link_to "Send Invoice", send_invoice_path(@invoice), method: :post %>

当然,你并不局限于POST方法

Ruby-on-rails相关问答推荐

Rails7--如何使用内联代码仅为操作运行BEFORE操作

如何将Form_With用于多个没有控制器的型号

Rails 6升级没有加载Mongoid,这是一个问题

Rails + Turbo_stream自定义操作:我可以在没有Stimulus的情况下根据DOM状态做出有条件的响应吗?

删除链接不起作用,重定向 echo 示 Ruby

Puma 工作人员无法在 Ubuntu 20.04 VM 上的 Rails 5.2 中启动

Ruby on Rails - 外键不匹配

Ruby - 如何删除目录中早于 X 天的所有文件?

NoMethodError:Puma::Events:Class 的未定义方法字符串

如何在 Arel 中重用单个绑定变量?

如何在 YAML 中声明带有单引号和双引号的字符串?

Rails Scope 返回 all 而不是 nil

rails 模型 has_many 本身

Ruby on Rails:有条件地显示部分

在 Rails 中创建随机 DateTime 的最佳方法

如何在 Rails 中测试助手?

使用 AJAX 向 Rails 发送 Authenticity Token 的正确方法

RubyMine - 关闭在空行中间单击的功能

Rails,设计认证,CSRF 问题

Ruby/Rails CSV 解析,UTF-8 中的无效字节序列