我正在创建一个带有搜索栏的程序,该搜索栏在我的项目中搜索我的SQL DB。
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>
但这只会在我的网页上显示一个#标签(#)。然后我转到我的app.rb
文件并在@item.inspect
根目录下/submit
。我回来了:
#<Sequel::SQLite::Dataset: "SELECT * FROM 'items' WHERE ('name' = 'apple')">
如何在数据库中显示与“apple”相关联的实际信息到我的网页上?
答案 0 :(得分: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>