允许用户根据所选类别(回形针宝石)对图像进行排序 - Rails

时间:2015-08-04 16:33:11

标签: ruby-on-rails ruby forms psql

目前我的主页(index.html.erb)显示过去24小时内加载的所有用户图片,这是帖子的一部分。但是,我想添加一个表单,允许用户根据类别和上传日期对图像进行排序。 (例如,带有类别音乐的图像,在过去一个月内上传)我了解如何查询数据库,但我不知道如何获取用户输入。当我使用简单的表单创建表单时:

<%= simple_form_for @posts do |f| %>

它抛出一个错误,说我不能使用一个对象。我也尝试了ajax,但它似乎与paperclip gem一起使用得很好,而且我宁愿在后端完成它。我希望我能很好地解释我的问题。如果没有随意发表评论,我会随时回复。提前致谢。

Post Controller:
 def index  
 @posts = Post.all.where(created_at:(Time.now - 1.day)..Time.now)
 end

Post表的架构:

create_table "posts", force: :cascade do |t|
t.string   "title"
t.string   "instagram"
t.text     "description"
t.string   "category"
t.datetime "created_at",                            null: false
t.datetime "updated_at",                            null: false
t.integer  "user_id"
t.string   "image_file_name"
t.string   "image_content_type"
t.integer  "image_file_size"
t.datetime "image_updated_at"

1 个答案:

答案 0 :(得分:0)

您可以创建一个表单,该表单将使用相同的HTTP谓词(GET)提交相同的操作(我假设posts_path基于控制器/操作):

<%= form_tag posts_path, method: :get do =>
  …
  <%= submit_tag "Search" %>
<% end %>

然后,在form_tag块中,添加您要用于过滤的字段,例如:

<%= text_field_tag :category %>

然后,您可以在控制器中有条件地过滤掉此字段:

@posts = @posts.where(category: params[:category]) if params[:category].present?