gpt4 book ai didi

ruby-on-rails - 使用redirect_to后如何停止 Controller 执行? (使用 rails )

转载 作者:行者123 更新时间:2023-12-03 06:31:42 26 4
gpt4 key购买 nike

我有一个具有多个操作的 Controller ,这些操作将 :year 和 :month 作为来自 URL 的属性。我已经创建了一个私有(private)方法 check_date 来检查日期是否有效并检查日期是否是将来的日期。

def check_date(year, month)
if month < 1 || month > 12 || year < 2000
flash[:notice] = I18n.t 'archive.invalid_date'
redirect_to :action => 'index'
elsif year > Date.today.year || (year == Date.today.year && month > Date.today.month)
flash[:notice] = I18n.t 'archive.no_future'
redirect_to :action => 'month_index',
:year => Date.today.year,
:month => Date.today.month,
:type => params[:type]
end
end

是否有一种 Rails 方法可以在重定向到?

我能想到的方法是在redirect_to之后抛出异常,或者从check_date返回一个值并在调用它的每个操作中检查它 - 类似于

def month_index 
year = params[:year].to_i
month = params[:month].to_i
if !check_date(year, month)
return
...
end

但我想知道是否有一些很好的 Rails 方法可以做到这一点。我当时是半希望调用redirect_to Rails 后能够识别出我想要的停下来,但这似乎并没有发生。

最佳答案

您还可以这样做:

return redirect_to :action => 'index'

return redirect_to :action => 'month_index', 
:year => Date.today.year,
:month => Date.today.month,
:type => params[:type]

因为它看起来比将 return 放在自己的行上更好(恕我直言)。

关于ruby-on-rails - 使用redirect_to后如何停止 Controller 执行? (使用 rails ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/820781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com