【问题标题】:What is the best way of writing this conditionality in rails?在 Rails 中编写此条件的最佳方法是什么?
【发布时间】:2017-12-28 08:37:30
【问题描述】:

在我的rails 应用程序中,用户将输入一个包含国家名称的 URL,如下所示。

示例:

localhost:3000/usa

localhost:3000/uk

localhost:3000/canada

而我目前在Application中的逻辑是这样的。

if ["usa","canada","uk"].include? (request.url.split("/").last)
 # some logic
end

上面的条件有没有更好的写法?

【问题讨论】:

  • 这取决于用例。你到底想达到什么目的?能有localhost:3000/usa/some/more/paths这样的场景吗?
  • 我只是想要改进或一些不同的方式来编写上述条件

标签: ruby-on-rails arrays conditional-statements


【解决方案1】:

我更喜欢在config/routes.rb中定义它

例如:

get "/countries/:name", to: "countries#show"

因此,控制器中的 params[:name] 将等于路由中的国家/地区名称。

但如果您有确切的国家/地区列表,也许您需要为每个国家/地区定义单独的路线。

get "/usa", to: "countries#usa"
get "/uk", to: "countries#uk"
get "/canada", to: "countries#canada"

【讨论】:

  • 我的问题不是关于路由。我觉得我的路由逻辑很好。目前是这样的。 ['usa', "canada","uk"].each 做 |place| get place, to: 'home#index' end
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 2020-07-09
  • 2013-06-27
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 2021-10-11
相关资源
最近更新 更多