如何更改我的参数格式?

时间:2010-01-25 15:57:46

标签: ruby-on-rails ruby

这是我的Ruby代码:

        <%form_tag orders_path, :method => 'get' do%>
        From                                        
        <%= date_select ("from", "", :start_year => 2010, :order => [:day, :month, :year])%>
        To                                              
        <%= date_select ("to", "", :start_year => 2010, :order => [:day, :month, :year])%>
        <%= submit_tag "Search", :name => nil%>
        <%end%>

在我选择了某个日期之后,我得到了这个结果:

  

http://localhost:3000/orders?from[%283i%29]=25&from[%282i%29]=1&from[%281i%29]=2010&to[%283i%29]=25&to[%282i%29]=1&to[%281i%29]=2010

我希望参数变为易于阅读的格式,如:

http://localhost:3000/orders?from=25/01/2010&to=25/01/2010

我该怎么办?

2 个答案:

答案 0 :(得分:1)

这根本不是Rails特有的,因为HTML表单传递参数的格式是一个定义的标准。 (?input_name=input_value&next_input_name=next_input_value)。由于您希望单独选择日/月/年,我担心在提交表单之前除了使用JS之外别无他法。

答案 1 :(得分:0)

Nils Riedemann是正确的,这不一定是一个rails问题,因为它是一个HTML表单问题。

您可以使用隐藏的表单字段来执行您想要的操作。创建两个隐藏文本字段(一个用于“from”,另一个用于“to”)。编写一个Javascript函数,它接受月/日/年选择字段的值,从其值中构建类似“25/01/2010”的字符串,并将此字符串存储为隐藏字段的内容。连接Javascript函数以在每次更改其中一个日期选择字段时运行。现在,如果您的表单的“提交”操作仅提交两个隐藏字段,您可以获得一个看起来更漂亮的URL。

或者,您也可以使用以下网址:

http://localhost:3000/orders/25-01-2010/25-04-2010

利用rails re-write URLs的能力。具体请参阅“漂亮网址”部分。