gpt4 book ai didi

ruby-on-rails - 为什么我的路由坚持是 GET,而它应该是 PUT

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:44 25 4
gpt4 key购买 nike

我在索引 View 中有此链接。

<%= link_to "Accept!", playtime_accept_path(playtime) unless playtime.accepted? %>

此链接的目的是更新已存在的 Playtime 记录,创建时它的 :accepted 属性默认为 false,用户单击此链接可更改它。

Controller 的 Action 非常简单(如果有更简单的方法我很想知道)

  def accept
@playtime = Playtime.find(params[:playtime_id])
@playtime.accepted = true

respond_to do |format|
if @playtime.update_attributes(params[:playtime])
format.html { redirect_to @playtime, notice: 'Playtime was successfully accepted.' }
else
format.html { render action: "edit" }
end
end
end

最后我用这条路线让所有的魔法都发生了

resources :playtimes do
get 'accept' => "playtimes#accept", :as => :accept
end

这不应该是 PUT 请求吗?如果是这样,实现这一目标的最佳方法是什么?

最佳答案

更新您的路由以告诉 Rails 该操作只能通过放置请求访问

resources :playtimes do
put :accept, on: :member
end

然后更新链接到

<%= link_to "Accept!", accept_playtime_path(playtime), method: :put unless playtime.accepted? %>

更新

我忘了说,您需要使用 params[:id] 而不是 params[:playtime_id]

@playtime = Playtime.find(params[:id])

关于ruby-on-rails - 为什么我的路由坚持是 GET,而它应该是 PUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24984197/

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