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/