我是Ruby on Rails(4.0)的新手,我正在努力寻找我试图实现的最佳方法。我一直在寻找一段时间,发现自己变得更加困惑。从本质上讲,我希望有一个主页,让用户可以使用我的需求模型填充下拉列表,当用户点击Requirements.title时,只显示那些具有相同标题的行。现在我有以下内容:
_req_dropdown.html.erb
<div id="category_select">
<%= collection_select(:requirement, :id, Requirement.all, :id, :title, options={:prompt => "Select a requirement"}, html_options={:onchange => 'this.form.submit()'} ) %>
</div>
_req_item.html.erb
<ol id="<%= req_item.id %>">
<span class="req_num">R<%= req_item.req_num %></span>
<span class="title"><%= req_item.title %></span>
<span class="description"><%= req_item.description %></span>
</ol>
static_pages_controller.rb
class StaticPagesController < ApplicationController
def home
if signed_in?
@requirement = current_user.requirements.build
@req_items = current_user.req_list.paginate(page: params[:page])
end
end
user.rb
class User < ActiveRecord::Base
def req_list
Requirement.where("user_id = ? ", id)
end
实施使用下拉菜单过滤数据的主页的最佳方法是什么?任何建议都会很棒,如果我没有添加足够的信息,请告诉我
答案 0 :(得分:0)
您可以通过使用ajax并用新数据替换预期的div来实现此目的。我正在解释小代码片段,我希望它能帮到你。
加载默认页面,因为第一时间没有任何过滤器。
选择下拉列表 - 在更改事件上触发ajax调用并从db获取新数据。
= select_tag('new_data', options_for_select([ "VISA", "MasterCard", "Discover" ], ["VISA", "Discover"])
// replace below div
.replace_me
Ajax调用
// searching the kids when session alone changes
$('#new_data').live('change', function() {
searching_new_data()
}).change();
function searching_new_data()
{
$.ajax({
url: "/controller/methods",
data: { new_data: $('#new_data').val(){
$("#form_loading").show();
},
complete: function(){
$('#form_loading').hide();
},
success: function(html){
$('#form_loading').hide();
$('#loading').empty();
$('#loading').append(html);
}
})
}
控制器:
def new_data
// query logic will goes here
end
查看:
// replaced view code
_new_data.html.haml
您需求的简要流程。