Sinatra 参数过滤器
Sinatra param filter
我即将完成我的 Sinatra Haml School 项目,但我需要解决一些问题(我非常努力但无法解决问题)。我有一个软件组合 CMS,我可以在其中创建新的软件条目(标题、描述、语言和 Github link),语言是从数据库中填充的下拉列表。事情是我想让用户 select 从列表中筛选并按软件列表中的类别进行筛选,但是当我按下筛选按钮时,它只显示第一个条目。这是 app.rb
中的代码
get '/softwares/:filter' do
halt(404,'Forbidden') unless session[:admin]
@sware = Software.all
@categ = Category.all
haml :sware
end
post '/softwares/:filter' do
@sware = Software.find(category: params[:category])
haml :sware
end
这里是显示软件列表的 HAML 代码
%form{:action => "/softwares/:filter", :method => "post", :role => 'form'}
%select{:name => "category"}
- @categ.to_a.each do |category|
%option= category.name
%input{:type => "submit", :value => "Filter", :class => "btn"}
%ul.list
- @sware.each do |software|
%li(class="glyphicon glyphicon-search" aria-hidden="true")
%a{:href =>"/software/edit/#{software.id}", :class =>"btn btn-lg btn-primary"}= software.title
%a.pull-right(href="/software/delete/#{software.id}" class="btn btn-lg btn-danger") Delete
%li(role="separator" class="divider") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
非常感谢您的回答。我非常感谢您提供的关于我做错了什么的所有信息。
从你的问题中很难判断,因为你没有提供太多信息,例如您使用的是什么 ORM。
假设您正在使用 ActiveRecord
:
Software.find(...)
#=> returns the first match
Software.where(...)
#=> returns all matches
我即将完成我的 Sinatra Haml School 项目,但我需要解决一些问题(我非常努力但无法解决问题)。我有一个软件组合 CMS,我可以在其中创建新的软件条目(标题、描述、语言和 Github link),语言是从数据库中填充的下拉列表。事情是我想让用户 select 从列表中筛选并按软件列表中的类别进行筛选,但是当我按下筛选按钮时,它只显示第一个条目。这是 app.rb
中的代码get '/softwares/:filter' do
halt(404,'Forbidden') unless session[:admin]
@sware = Software.all
@categ = Category.all
haml :sware
end
post '/softwares/:filter' do
@sware = Software.find(category: params[:category])
haml :sware
end
这里是显示软件列表的 HAML 代码
%form{:action => "/softwares/:filter", :method => "post", :role => 'form'}
%select{:name => "category"}
- @categ.to_a.each do |category|
%option= category.name
%input{:type => "submit", :value => "Filter", :class => "btn"}
%ul.list
- @sware.each do |software|
%li(class="glyphicon glyphicon-search" aria-hidden="true")
%a{:href =>"/software/edit/#{software.id}", :class =>"btn btn-lg btn-primary"}= software.title
%a.pull-right(href="/software/delete/#{software.id}" class="btn btn-lg btn-danger") Delete
%li(role="separator" class="divider") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
非常感谢您的回答。我非常感谢您提供的关于我做错了什么的所有信息。
从你的问题中很难判断,因为你没有提供太多信息,例如您使用的是什么 ORM。
假设您正在使用 ActiveRecord
:
Software.find(...)
#=> returns the first match
Software.where(...)
#=> returns all matches