我尝试设置一个表单,我希望它转移到成员#index。 但是使用代码①,我失败了,表单移到了成员#show。
☆code①
<%= form_tag :action => 'index' do %>
<div class = "field">
<%= label_tag 'place', '活動場所:' %><br />
<%= text_field_tag 'place' %>
</div>
<%= submit_tag '検索' %>
<% end %>
我得到了一些建议并修复了代码②。 我有个问题。为什么我必须将方法从“post”更改为“get”?
☆code2产生
<div class= "form_index">
<%= form_tag({:action=>"index"}, {:method=>"get"}) do %>
<div class="from_field_index">
<%= label_tag 'place', '場所:' %>
<%= text_field_tag 'place' %>
</div>
<div class="search_button">
<%= submit_tag '検索' %>
<% end %>
</div>
</div>
☆members_controller
def index
if params[:place].present?
@members = Member.where("place like ?" , "%" + params[:place] + "%")
else
@members = Member.all
end
respond_to do |format|
format.html # index.html.erb
format.json
end
end
答案 0 :(得分:1)
GET
意味着从服务器检索内容。 POST
意味着向服务器添加内容。
搜索将从服务器获得一些结果,因此传统方法是在此操作上使用GET
。搜索表单是使用GET的表单的完美示例。
此外,您的控制器操作index
会响应&#39; GET&#39; only,由默认资源路由定义。它还需要您的客户端发送的请求“GET&#39;。
在搜索中使用GET的另一个好处是,params将在url中,因此url是可收藏的,可共享的和历史可以记录的。想想Google,只需复制链接即可共享搜索结果。