这是实现我认为您的目标的另一种方法的基本示例(根据 cmets)。
这会在您的列表控制器中添加一个新操作,该操作会根据用户从列表索引页面上的搜索表单中输入的结果返回过滤后的结果列表。结果使用相同的索引模板呈现。检查/检索结果的逻辑可以根据您的需要进行修改。如果您只想要一个复选框,则只有一个复选框或一个调用该操作的按钮。
您可以执行类似的逻辑,但使用 ajax 返回结果并使用部分在索引模板上呈现它们。
这应该可以为您提供足够的信息,让您通过 Google 获取示例/教程,并尝试不同的方式来获得您想要的东西。
添加路线:
# routes.rb
get 'pets_allowed', to: 'things#pets_allowed'
添加新操作:
# listings_controller.rb
# GET /things
# GET /things.json
def index
@listings = Listing.all
end
# Get /pets_allowed
def pets_allowed
@listings = Listing.where("name LIKE ? and pets = ?", "%#{params[:name]}%", params[:pets] )
render template: "listings/index", variable: @listings
end
将搜索表单添加到您的视图中:
# listings/index.html.erb
<h1>Listings</h1>
<%= form_tag('pets_allowed', method: 'GET' ) do %>
<%= label_tag :name %><br>
<%= text_field_tag :name %>
<br>
<%= label_tag :pets %><br>
<%= check_box_tag :pets, 't' %>
<br>
<%= submit_tag("Search") %>
<% end %>
<table>
<thead>
<tr>
<th>Listing name</th>
</tr>
</thead>
<tbody>
<% @listings.each do |listing| %>
<tr>
<td><%= listing.name %></td>
</tr>
<% end %>
</tbody>
</table>
<br>
<%= link_to 'New Listing', new_listing_path %>