2017-05-23 153 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語句,它們是相同的,所以這很奇怪 –