如何通过'?'网址中的字符(rails)

时间:2015-06-05 09:13:48

标签: ruby-on-rails url params

我想将查询传递给url之类的 HTTP:/本地主机:3000 / saldo /; 1010917745800000015 1

在我的路线中我有:

get 'saldo/:nomor' => 'kartus#show_saldo' , as: :show_saldo

和控制器:

def show_saldo
  @kartu = Kartu.find_by_nomor(params[:nomor])
end

但我得到了这个参数

Parameters {"1"=> nil,"nomor"=>";1010917745800000015"}

我怎样才能将我的参数作为{"nomor"=>";1010917745800000015?1"}

2 个答案:

答案 0 :(得分:2)

//usr/local/lib/libglfw3.a(x11_init.c.o): In function `initExtensions':
x11_init.c:(.text+0x1aeb): undefined reference to `XineramaQueryExtension'
x11_init.c:(.text+0x1b05): undefined reference to `XineramaIsActive'
//usr/local/lib/libglfw3.a(x11_init.c.o): In function `_glfwCreateCursor':
x11_init.c:(.text+0x21f9): undefined reference to `XcursorImageCreate'
x11_init.c:(.text+0x22d0): undefined reference to `XcursorImageLoadCursor'
x11_init.c:(.text+0x22e0): undefined reference to `XcursorImageDestroy'
//usr/local/lib/libglfw3.a(x11_monitor.c.o): In function `_glfwPlatformGetMonitors':
x11_monitor.c:(.text+0x6e9): undefined reference to `XineramaQueryScreens'
collect2: error: ld returned 1 exit status

获取除url参数以外的所有内容都将成为您的查询参数。 private void Poll() { while (Enabled) { try { BasicDeliverEventArgs objBasicDeliverEventArgs; //Get next message var boolMessageRecieved = _subscription.Next(60000, out objBasicDeliverEventArgs); //Deserialize message if (boolMessageRecieved) { var objEvent = DeSerialize(objBasicDeliverEventArgs.Body); if (objEvent != null) { registerService.Process(objEvent); _subscription.Ack(); } } else { //DB realted process. Console.WriteLine("Idle time because there is no messages in queue"); System.Threading.Thread.Sleep(60000); } } catch (Exception) { //log } } } 将成为您的网址参数。更多信息here

答案 1 :(得分:2)

?是网址中的特殊字符。如果你想把它包含在一个参数的值中,你应该在提交之前 Uri Encode ,例如用CGI.escape(),参数:这将转换"?&#34 ; to"%3F",并将类似地转换任何其他特殊字符(空格,括号等)。因此,实际提交的参数将变为"%3B1010917745800000015%3F1"。

在服务器端,rails会在params上调用CGI.unescape,因此它应该在你的控制器中显示为&#34 ;; 1010917745800000015?1"试。

这应该通过表单输入自动发生 - 也就是说,如果有人将;1010917745800000015?1写入文本字段,那么它实际上应该通过"%3B1010917745800000015%3F1"

发送

如果您希望人们诊断为什么没有发生这种情况,那么您应该在您的问题中包含html(提交此值的表单或链接)。