Rails控制器方法,使用if语句进行渲染或重定向

时间:2014-01-27 07:59:58

标签: ruby-on-rails redirect path render

在我的rails应用程序中,我正在尝试创建一个控制器方法,该方法取决于if语句呈现一个页面或重定向到另一个路径。我认为解决方案可能是创建一个单独的方法,我可以调用我的if语句,它具有单独的渲染。即使我应该落入if语句的第一部分,也不会显示alert.html.erb页面视图。我的问题是在此操作中多次调用渲染和重定向(每次一次)。如何根据if语句将我的方法重定向到不同的地方?

def alert(url)
    @urls = Url.all
    render :alert
end

def update
    id = params[:id]
    updated_info = params.require(:url).permit(:link, :random_string, :clicks)
    @url = Url.find(id)

    if  not Url.where(random_string: @url.random_string).empty?
        alert(@url)

    end

    @url.update_attributes(updated_info)
    redirect_to edit_url_path(@url.id)
end

2 个答案:

答案 0 :(得分:0)

添加

return

在渲染或redirect_to

之后立即执行

if [condition A]
  render :edit
  return
elsif [condition B]
  redirect_to my_url
  return
end

redirect_to root_url

答案 1 :(得分:0)

您可以将'return'关键字用作:

return redirect_to edit_url_path(@url.id)

return normal_path(@url)