作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想向我的 Controller 添加另一个 Action ,但我不知道如何。
我在 RailsCasts 和大多数 StackOverflow 主题上找到了这个:
# routes.rb
resources :items, :collection => {:schedule => :post, :save_scheduling => :put}
# items_controller.rb
...
def schedule
end
def save_scheduling
end
# items index view:
<%= link_to 'Schedule', schedule_item_path(item) %>
undefined method `schedule_item_path' for #<#<Class:0x6287b50>:0x62730c0>
最佳答案
一种更好的写作方式
resources :items, :collection => {:schedule => :post, :save_scheduling => :put}
resources :items do
collection do
post :schedule
put :save_scheduling
end
end
/items/schedule
/items/save_scheduling
item
进入您的
schedule_...
路线方法,您可能想要
member
路由而不是
collection
路线。
resources :items do
member do
post :schedule
put :save_scheduling
end
end
/items/:id/schedule
/items/:id/save_scheduling
schedule_item_path
接受
Item
实例将可用。最后一个问题是,您的
link_to
目前将产生一个
GET
请求,而不是
POST
根据您的路线要求请求。您需要将此指定为
:method
选项。
link_to("Title here", schedule_item_path(item), method: :post, ...)
关于ruby-on-rails - 如何在 Rails 3 中向 Controller 添加自定义操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13763818/
我是一名优秀的程序员,十分优秀!