gpt4 book ai didi

ruby-on-rails - Rails 3 : “:method => :post” doesn't work… seems to be 'GET' when it should 'POST'

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

我正在尝试按照 Railscast 163:Self Referential Assosication 中的描述在我的Rails 3应用程序中实现“友谊”
我已经按照说明进行了所有设置。我正在使用可以正常运行的Authlogic登录的基本用户模型。但是,当我尝试使用以下链接添加 friend 时:

<% for user in @users %>   
<%=h user.username %>
<%= link_to "Add Friend", friendships_path(:friend_id => user), :method => :post %>
<% end %>
我重定向到 http://localhost:3000/friendships?friend_id=2未知操作找不到FriendshipsController 错误的操作“索引”,没有进一步说明。这特别奇怪,因为我有一个硬编码的重定向回当前用户的“User#show”方法(即在添加好友后重定向回个人资料)。
如果有帮助,这是我的“friendships#create”方法:
def create  
@friendship = current_user.friendships.build(:friend_id => params[:friend_id])
if @friendship.save
flash[:notice] = "Added friend."
redirect_to :controller => 'users', :action => 'show', :id =>'current_user'
else
flash[:notice] = "Unable to add friend."
redirect_to :controller => 'users', :action => 'show', :id =>'current_user'
end
end
知道是什么原因造成的吗?我发现有人在这里遇到类似的问题,但找不到确切的解决方法: Rails 3 and Friendship Models
在此先感谢您的帮助!
〜丹

最佳答案

我认为link_to将参数放入使用html链接创建的查询字符串中,即使在禁用js的情况下,即使您放置:method =>:post也是如此。

您可以使用javascript:onclik事件来模仿帖子。

aniway,将link_to与方法:post一起使用通常不是一个好主意。
在rails中,您可以使用 button_to 帮助器来实现此目的,并将其样式化为链接。

编辑:
在Rails3中,doc似乎在使用params进行调用时,link_to必须模拟button_to的相同行为:method =>::post

(dynamically create an HTML form and immediately submit the form ).



但是即使在启用了JavaScript的情况下,在Rails 3.0.3中对我来说也不是正确的。
我会调查。

无论如何 ,您应该将按钮和表单用于非GET的任何内容;超链接故意不允许使用除GET 之外的方法

编辑2:
好的,
rails3不会创建用于通过链接模拟发布请求的内联表单。在Rails3中,将data-method = post属性添加到标记中以通过javascript函数对其进行操作。这样,如果禁用了js,请求会在get调用中正常降级。

关于ruby-on-rails - Rails 3 : “:method => :post” doesn't work… seems to be 'GET' when it should 'POST' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4799541/

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