rails如何根据当前区域设置显示搜索结果

时间:2015-01-07 12:10:19

标签: ruby-on-rails forms locale

Rails应用程序正在从页面检测不同的区域设置并正确显示,但索引页面中的搜索表单的结果除外。

我的路线:

 get 'search' => 'mymodel#show'

我的控制员:

def search
 if @mymodel = mymodel.find(params[:id])
 else 
  redirect_to mymodel_path
 end
end

我的搜索部分(每个区域设置一个并正确检测):

<div class="actions"><br>
<%= form_tag("/search", method: "get") do %>
<%= label_tag(:q, "") %>
<%= text_field_tag(:id) %>
<%= submit_tag("Search") %>
<% end %>

搜索显示正确的结果,但始终使用默认语言环境“english”。 它不会检测正在使用的当前区域设置。

我有基于区域设置的不同显示页面。除了显示搜索表单的结果外,它们在整个应用程序中都能正常工作。

如何以正确的区域设置显示结果? 感谢您的帮助,我无法弄清楚如何做到这一点......

3 个答案:

答案 0 :(得分:0)

routes.rb文件中,更改搜索方法路线,如下所示:

scope "(:locale)" do
  get 'search' => 'mymodel#show'
end

答案 1 :(得分:0)

我设法为每个语言环境创建新视图,新操作和新路由。 所以我现在为每个语言环境提供了不同的部分,视图,路由和操作。

绝对不是干燥的方式,但它的工作原理。

答案 2 :(得分:0)

如果你改变了,鸸's的解决方案就可以了。

<%= form_tag("/search", method: "get") do %>

<%= form_tag("/"+I18n.locale.to_s+"/search", method: "get") do %>