У меня есть приложение Rails, которое просматривает БД и возвращает элементы.На данный момент, на мой взгляд, он автоматически возвращает результаты поиска по умолчанию ("") без необходимости нажатия на мой submit_tag.Как мне выполнить это действие только после того, как я нажму на submit_tag?Любая помощь будет принята с благодарностью!
Вот мой взгляд:
<%= form_tag(new_design_path, method: :get) do %>
<%= label_tag(:q, "Search all designs:") %>
<%= text_field_tag(:q) %>
<%= submit_tag("Search") %>
<% end %><br>
<!-- Button to return one random design -->
<%= form_tag(new_design_path, method: :get) do %>
<%= label_tag(:q, "Inspire me! Click here for a random design:") %>
<%= submit_tag("Random Design") %>
<% end %>
<h2>Search results:</h2>
<% @random.each do |design| %>
<h3><%= design['name'] %></h3>
<h5><%= image_tag design['thumbnail_url'] %></h5>
<% end %>
<% @search.each do |design| %>
<div class="design">
<h3 class="design_name"><%= design['name'] %></h3>
<h5><%= image_tag design['thumbnail_url'] %></h5>
<%= button_to 'Save to Favourites',
designs_path(
design: design.slice('name', 'thumbnail_url')
),method: :post %>
</div>
<% end %>
И мой контроллер:
class DesignsController < ApplicationController
def index
@designs = Design.all.order("created_at DESC")
end
def new
# returns an array of hashes
@search = SpoonflowerApi.new.find(params[:q])['results']
@random = SpoonflowerApi.new.random(rand(1..740579), 1)['results']
end
def create
@design = Design.new(design_params)
@design.save
if @design.save
flash[:notice] = 'Design has been added to favourites!'
else
flash[:notice] = 'Design already in Favourites!'
end
redirect_to new_design_path
end
def destroy
@design = Design.find(params[:id])
@design.destroy
flash[:notice] = 'Design removed from favourites!'
redirect_to designs_path
end
private
def design_params
params.require(:design).permit(:name, :thumbnail_url)
end
end