首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails: redirect_to:=> =>‘tips’,:action控制器‘=>’,:id => @tip.permalink

Rails: redirect_to:=> =>‘tips’,:action控制器‘=>’,:id => @tip.permalink
EN

Stack Overflow用户
提问于 2010-06-12 05:35:58
回答 3查看 40.1K关注 0票数 19

我试图通过传递controller、action和params来重定向rails以显示操作。然而,rails完全忽略了action的名称!

我得到的是http://mysite/controllername/paramId

所以我有错误信息....

下面是我使用的操作代码:

代码语言:javascript
复制
def update
    @tip = current_user.tips.find(params[:id])
    @tip.attributes = params[:tip]
    @tip.category_ids = params[:categories]
    @tip.tag_with(params[:tags]) if params[:tags]


    if @tip.save
      flash[:notice] = 'Tip was successfully updated.'
      redirect_to :controller=>'tips', :action => 'show', :id => @tip.permalink
    else
      render :action => 'edit'
    end
  end 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-12 06:40:03

这可能是一个暂时的“绕过”。使用render,它工作得非常好...

代码语言:javascript
复制
if @tip.save
  flash[:notice] = 'Tip was successfully updated.'
   render :action => 'show', :id => @tip.permalink
 # redirect_to :controller=>'tips', :action => 'show', :id => @tip.permalink
else
  render :action => 'edit'
end
票数 -3
EN

Stack Overflow用户

发布于 2010-06-12 06:59:19

为什么要对抗框架呢?

代码语言:javascript
复制
redirect_to @tip

您还可以使用:notice选项来缩短代码。

代码语言:javascript
复制
redirect_to @tip, :notice => 'Message here'
票数 35
EN

Stack Overflow用户

发布于 2010-06-12 07:00:26

如果是REST资源路由,则路由实际上是正确的。/tips/id上的GET请求实际上调用了show操作。由于它的路由方式,我猜您是用map.resources路由它的,这是正确的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3026394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档