我在我的rails应用程序搜索中遇到了一个问题。
这是我的复选框代码:
<form action="<%= search_path %>" method="get">
<%= check_box_tag :title, params[:title] %> Title
<input type="submit" value="Fielter" />
</form>
此代码搜索但在网址中显示默认=on
,如下所示:
http://localhost:3000/search?title=on
如何搜索ABC
&amp;等标题?删除默认=on
。
我需要这样:
http://localhost:3000/search?title=ABC
谢谢
答案 0 :(得分:2)
check_box_tag(name,value =&#34; 1&#34;,checked = false,options = {})
我认为默认值来自params[:title]
中的check_box_tag
。
因为当您拥有<%= check_box_tag :title, params[:title] %>
时, HTML 等效项
<input id="title" name="title" type="checkbox" value="on" /> #assumning the value of params[:title] is on
因此复选框的值始终为 。
尝试将其更改为
<%= check_box_tag :title %> Title
答案 1 :(得分:0)
如果没有javascript,那个特定的url模式可能很难做到,但是通过处理逻辑服务器端,你可以很容易地获得所需的结果(只有在选中复选框时搜索标题)。
只需将您的表单修改为始终将标题作为隐藏字段(因此它始终作为提交时的参数传递)以及复选框,该复选框将作为参数传递为1或0(true或false )取决于是否检查。然后,处理搜索路径中的逻辑:如果checkbox参数为true,则根据title参数进行搜索。如果复选框为false,则不要使用title参数。
var dic = [NSDate: Int]()
这将为您提供如下所示的网址格式:
<form action="<%= search_path %>" method="get">
<%= hidden_field_tag "title", :title %>
<%= check_box_tag :use_title %> Title
<input type="submit" value="Fielter" />
</form>
在控制器动作中:
http://localhost:3000/search?title="ABC"&use_title="1"
or
http://localhost:3000/search?title="ABC"&use_title="0"
这应该会给你想要的行为。