redirect_to :controller=>'groups',:action=>'invite'

但是我得到了一个错误,因为redirect_to send get method我想把这个方法改成'post',redirect_to what will I do没有:method选项?我可以不用重定向到吗?
编辑:
我在groups/invite.html.erb中有这个
<%= link_to "Send invite", group_members_path(:group_member=>{:user_id=>friendship.friend.id,  :group_id=>@group.id,:sender_id=>current_user.id,:status=>"requested"}), :method => :post %>

此链接调用Group_Members控制器中的创建操作,执行创建操作后,我希望显示具有Group_ID的groups/invite.html.erb(我的意思是,单击“发送邀请”后,将创建Group_成员,然后显示当前页),如下所示:
redirect_to :controller=>'groups',:action=>'invite',:group_id=>@group_member.group_id

使用get方法重新定向后,它将调用组中的show action并将invite作为id并给出此错误
Couldn't find Group with ID=invite

我在组中的邀请操作
    def invite
@friendships = current_user.friendships.find(:all,:conditions=>"status='accepted'")
@requested_friendships=current_user.requested_friendships.find(:all,:conditions=>"status='accepted'")
@group=Group.find(params[:group_id])
 end

解决方法是我必须用post方法重定向,但是我找不到方法。
丑陋的解决方法:我解决了这个我不喜欢的问题。如果你有公平的解决办法,我还是等着。
我的解决方案是为invite添加路由以摆脱“找不到id=invite的组”错误。
在RB中
   map.connect "/invite",:controller=>'groups',:action=>'invite'

在创建操作中
   redirect_to "/invite?group_id=#{@group_member.group_id}"

我认为,在5月份的语言中,我把这个解决方案称为“amele yontemi”,在英语中称为“体力劳动法”。

最佳答案

听起来你好像被Rails路由的工作方式绊倒了。此代码:

redirect_to :controller=>'groups',:action=>'invite',:group_id=>@group_member.group_id

创建一个类似于/groups/invite?group_id=1的url。
如果没有routes.rb中的映射,rails路由器会将其映射到show操作,而不是invite。url的invite部分被映射到params[:id]中,当它试图在数据库中找到该记录时,它将失败,您将收到找到的消息。
如果您使用的是restful路由,那么您已经有一个map.resources行,如下所示:
map.resources :groups

您需要为invite添加自定义操作:
map.resources :groups, :member => { :invite => :get }

然后将params[:group_id]方法中对#invite的引用更改为仅使用params[:id]

关于ruby-on-rails - Rails redirect_to post方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/997956/

10-10 05:52