在 routes.rb 上为 Ruby on Rails 根目录设置可选参数



我使用static_pages控制器来提供所有静态页面内容。我希望能够将参数传递给这个静态页面内容,以便打开几个用于登录和消息弹出的模式框。

root 'static_pages#home'

我该怎么做?

如果存在某些参数,则可以使用Javascript在视图中执行此操作。

例如,在home.html.erb 中

<% if params[:your_param] == true %>
<script type="text/javascript">
// fire modal
</script>
<% end %>

然后只需将您的参数添加到查询字符串中:

http://www.yoursite.com/?your_param=true

无需修改路由文件。模态是与视图相关的,那么为什么不把逻辑保持在视图中呢?

就你对条件重定向的评论而言,这听起来像是控制器的工作。您也可以访问控制器中的params,因此可以根据传递给操作的params进行必要的重定向。

使用routes.rb的一种方法是:

# config/routes.rb
get 'posts/:id(/:opt1(/:opt2(/:opt3)))' => 'posts#show'

然后调试视图中的参数

# app/views/posts/show.html.erb
<%= params %>

如果URL为posts/1/A/B/C,则会显示:

{"controller"=>"posts", "action"=>"show", "id"=>"1"
"opt1"=>"A", "opt2"=>"B", "opt3"=>"C"}

路由中的括号是可选的,并被视为路由中非括号部分的参数。

最新更新