2017-05-23 32 views
-1

我试图让从HTML值选择输入到我的控制器,这样我可以在有条件的ERB片断获取值控制器ERB

这使用它是为HTML片段下拉

<select id="select" name="parish" class="form-control" onchange="choice(this.value)"> 
    <option value="">--Select value--</option> 
    <option value="test">test</option> 
    <option value="two">2</option> 
</select> 

我被告知要使用AJAX来传递值

function choice(value) { 
    console.log(value) 
    $.ajax({ 
    url: '/tickets/index', 
    type: 'GET', 
    data: { 
     parish: $('#select').val() 
    } 
    /*success:function() { 
     body... 
    }*/ 
    }) 
} 

而且我的机票控制器看起来是这样的:

def index 
    @ticket = Ticket.all; 
    @value = params[:parish] 
    puts @value 
end 

这是有条件的erb,你可以看到它被设置为使用来自控制器的变量,但它不工作,但如果我用它工作的硬编码字符串,puts @value显示在值替换@value控制台,因此它不是空的。我究竟做错了什么?

<% @ticket.where(parish: @value).each do |ticket| %> 
+0

你得到你的日志中的任何错误消息? – Gerry

+0

@Gerry没有错误,只是看到正在打印的变量 –

+0

您不能使用GET请求发送数据,只能使用POST。 –

回答

0

问题是@value与查询您正在使用的视图。这<% @ticket.where(parish: @value).each do |ticket| %>错误@ticketActiveRecord的收集不是ActiveRecord的模型,所以它不会工作。你应该做

<% Ticket.where(parish: @value).each do |ticket| %> 

但它不是优雅的方式有一个视图的查询,这将使一个数据库调用,也牢记@value取决于params[:parish]我会做

def index 
    unless params[:parish].nil? 
    @tickets = Ticket.where(parish: params[:parish]) 
    else 
    @tickets = Ticket.all 
    end 
    respond_to do |format| 
    format.html 
    format.js 
    end 
end 

,并在视图

<% @tickets.each do |ticket| %> 
+0

谢谢,但它仍然无效,我得到了一个更好的结果,以前地图会移动到海洋中间有0个标记,当我选择一个教区时,它只是有点刷新并显示所有标记仍然如此不像硬编码那样工作 –

+0

@the_islander'params'看起来'parish'的价值是什么? – Pavan

+0

puts params [:parish]打印kingston,当我从下拉菜单中选择它时,应该像字符串“kingston”一样工作。我比较了变量和硬编码字符串产生的SQL语句,它们是相同的,所以这很奇怪 –