【问题标题】:Rails Controller Method with if-statement to either render or redirect带有 if 语句的 Rails 控制器方法来呈现或重定向
【发布时间】:2014-01-27 07:59:58
【问题描述】:

在我的 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

【问题讨论】:

  • 定义“不起作用”。另外,为什么需要单独的方法?
  • 我编辑了问题,以便解释“不起作用”。

标签: ruby-on-rails redirect path render


【解决方案1】:

添加一个

return

在渲染或redirect_to之后立即

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

redirect_to root_url

【讨论】:

    【解决方案2】:

    你可以使用'return'关键字:

    return redirect_to edit_url_path(@url.id)
    

    return normal_path(@url)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      相关资源
      最近更新 更多