gpt4 book ai didi

ruby-on-rails-3 - 将路由添加到 Rails 3 Controller

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

我仍然在掌握 Rails 的诀窍,我遇到了一个我认为应该很容易解决的问题。希望有人能指出我方法的错误。

我通读了另一篇文章:How to add a custom RESTful route to a Rails app?它有很多有用的信息(对于 Rails 2,我使用的是 Rails 3),但我似乎无法让我的代码工作。这是我所在的位置:

我已经附加了我的 routes.rb 如下:

  resources :proposals do
member do
put :change_status
end
end

我已经附加了我的 proposals_controller.rb 如下:

  def change_status
@proposal = Proposal.find(params[:id])

respond_to do |format|
if @proposal.change_status
format.html { redirect_to(@proposal, :notice => 'Proposal status was changed.'') }
format.xml { head :ok }
else
format.html { redirect_to(@proposal, :error => 'Proposal failed to transition.') }
format.xml { render :xml => @proposal.errors, :status => :unprocessable_entity }
end
end
end

最后,在我看来,我按如下方式访问它:

<%= link_to "Deliver to Client", change_status_proposal_path(@proposal) %>

但是当我通过以下方式访问我的网站时

http://localhost:3000/proposals/4/change_status

我收到以下错误:

路由错误

没有路由匹配“/proposals/4/change_status”

我假设我在这里做了一些愚蠢的事情,因为这应该是非常基本的,但我似乎无法通过它。我为提出这样一个基本问题而道歉,但如果有人有任何建议,那将是一个巨大的帮助。

提前致谢!

最佳答案

这是因为您在路由中使用了 put 作为动词。因此链接必须如下所示:

<%= link_to "Deliver to Client", change_status_proposal_path(@proposal), :method=>:put %>

您无法仅通过将 url 放入浏览器来访问此路由,因为需要 POST 请求。将 url 放入浏览器算作 GET。

关于ruby-on-rails-3 - 将路由添加到 Rails 3 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5168946/

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