我想将查询传递给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"}
答案 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(提交此值的表单或链接)。