2015-05-15 23 views
0

我正在用搜索欄創建一個程序,該搜索欄在我的項目中搜索我的SQL DB。從SQL DB顯示信息到ERB網頁

Index.erb:我有我的index.erb文件中搜索欄的代碼。

<form method="get" action="/submit"> 
    <input placeholder="Search" type="text" name="userInput"/> 
    <input type="submit" value="Search" /> 
</form> 

App.rb:在我app.rb文件我用params[:userInput]來獲取信息的用戶類型在搜索欄中。然後我通過.where()方法將其傳遞到我的數據庫以查找具有相同名稱的項目。 (注意:我正在使用sinatra創建我的路線)。

get '/' do 
    erb :index 
end 

get '/submit' do 
    @item = Item.where(:name => params[:userInput]) #I created a table called `items` under my migration and a class called `Item` in my models folder 
    # puts @item.inspect 

    erb :index 
end 

Index.erb:然後回到我的ERB文件,我創建了一個div,我想顯示的信息(名稱相同的詞,用戶在最初鍵入)所收集的來自DB。所以我做了:

<div> 
    <%= @item %> 
</div> 

但是這隻在我的網頁(#)上顯示一個hashtag。所以然後我去了我的app.rb文件,並根據/submit根做了@item.inspect。我回來了:

#<Sequel::SQLite::Dataset: "SELECT * FROM 'items' WHERE ('name' = 'apple')"> 

如何顯示我的數據庫中與'apple'關聯的實際信息到我的網頁上?

回答

1

正如我研究,我發現有這個問題有很多解決方案。我將使用一種簡單而簡單的方式。

Index.erb File之內,上面寫的代碼(<div> <%= @item %> </div>)接近期望的結果。而不是隻寫@item,你會寫:

<div> 
    <% @item.each do |x| %> <!-- Or whatever variable you would like to pass --> 
     <%= x[:the_id_of_your_hash] %> <!-- You can do this however many times you would like --> 
    <% end %> 
</div>