2010-01-25 59 views
0

这是我的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 

我该怎么办?

回答

1

这完全不是Rails特有的,因为参数被HTML表单传递的格式是定义的标准。 (?input_name=input_value&next_input_name=next_input_value)。既然你想单独选择日/月/年,恐怕除了在提交表单之前使用JS之外没有别的办法。

0

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

您可能能够使用隐藏的表单域来做你想做的事。创建两个隐藏文本字段(一个用于“from”和一个用于“to”)。编写一个采用月/日/年选择字段值的Javascript函数,从它们的值中构建一个类似“25/01/2010”的字符串,并将该字符串存储为隐藏字段的内容。每次更改某个日期选择字段时,将Javascript函数连接起来运行。现在,如果表单的“提交”操作仅提交了两个隐藏字段,则可以获得您想要的更加美观的网址。

或者,你可以使用一个URL,如:通过利用轨道的能力,以re-write URLs

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

。具体请参阅“漂亮网址”部分。