使用命名路由根据params重定向到路径

时间:2014-01-23 18:38:03

标签: ruby-on-rails

def destroy
    @project = Relationship.find(params[:id]).followed
    current_user.unfollow!(@project)
    respond_to do |format|
            format.html { params[:page]? (redirect_to "#{params[:page]}_path") :           (redirect_to @project ) }
            format.js 
    end
end 

在上面的代码中,如果我传递params [:page] =“dashboard”,那么它应该重定向到dashboard_path但当前它重定向到localhost:3000dashboard_path

我知道问题出在哪里(“#{params [:page]} _ path”返回一个字符串而不是一个路径)但是我想要解决方案bcoz我不知道如何解决这个问题。

非常感谢。

2 个答案:

答案 0 :(得分:1)

我认为这会起作用

redirect_to send("#{params[:page]}_path")

或完整版

format.html { params[:page] ? redirect_to(send("#{params[:page]}_path")) : redirect_to(@project) }

答案 1 :(得分:1)

在我看来,这种对参数的依赖是不必要的。

是您编写控制器的人,也是您在上一页中定义此类查询字符串的人。

那么,为什么不直接redirect_to dashboard_path如果这是你所需要的所有逻辑?