gpt4 book ai didi

ruby-on-rails - 如何在 Rails 3 中向 Controller 添加自定义操作

转载 作者:行者123 更新时间:2023-12-03 12:03:11 25 4
gpt4 key购买 nike

我想向我的 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

这将创建像这样的 URL
  • /items/schedule
  • /items/save_scheduling

  • 因为你正在传递一个 item进入您的 schedule_...路线方法,您可能想要 member路由而不是 collection路线。
    resources :items do
    member do
    post :schedule
    put :save_scheduling
    end
    end

    这将创建像这样的 URL
  • /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, ...)

    推荐阅读: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

    关于ruby-on-rails - 如何在 Rails 3 中向 Controller 添加自定义操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13763818/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com