在表单

时间:2016-12-27 22:05:24

标签: javascript jquery ruby-on-rails

我在另一个表单中添加了一个搜索功能。我想搜索其他形式的内容。

Interest_index.html.erb

<%= form_for :interest, url: interest_index_path do |f| %>
    <p class="col-md-8" align="left"><%= f.submit "Save Schedule", class: "btn btn-primary btn-lg btn-block"%></p>
    <br>
    <div class="field form-group col-lg-12">
        <h1><%= f.label :interests, "Schedule" %></h1>
        <br>
        <div class="row inline">
         <%= form_tag interest_index_path, method: :get do %>
          <p>
          <div class="col-lg-offset-2 col-lg-7" id="one">
            <%= text_field_tag :search, params[:search], class: "form-control", placeholder: "Search" %>
          </div>
          <div id="two">
            <%= submit_tag "Search", name: nil, class: "btn btn-default" %>
          </div>
          </p>
        <% end %>
       </div> 

       <% @subjects.each do |subject| %>
        <div class="field">
          <p><h4><%= f.check_box :interests, {:multiple => true}, subject.id, nil %><%= subject.name %></h4></p>
        </div> 
       <% end %>
     </div> 
<% end %>

我有一个更大的搜索表单来搜索将被选中的主题,然后与主表单一起提交。我已经尝试使用基本搜索作为我新的rails,但它不起作用。

我认为通常在表单中有一个表单,你需要创建嵌套属性,但这是一个搜索表单,我不知道该怎么做或者是否可行。

我设置它的方式是我创建了很多主题,它们将显示在 interest 索引下。根据兴趣,用户选择他们感兴趣的主题

这里是控制器和模型

Interests_controller     class InterestController&lt; ApplicationController中

 def index
   if params[:query].present?
     @subjects = Subject.search(params[:query], load: true)
   else
     @subjects = Subject.all.sort_by(&:name)
   end
 end

 def create
   current_user.interests = params[:interests].to_json
   if current_user.save
   else
     flash[:danger] = "Something went wrong!"
   end
     redirect_to interest_index_path
   end

end

**兴趣模式**

class Interest < ActiveRecord::Base
searchkick

include Tire::Model::Search
include Tire::Model::Callbacks

def self.search(search)
    if search
        where('name LIKE ?', "%#{search}")
    else
        scoped
    end
end
end

主题模型

class Subject < ActiveRecord::Base
 has_many :posts
 has_many :users, through: :posts
 validates_presence_of :name
 validates_uniqueness_of :name
end

Subject_controller

class SubjectController < ApplicationController
  def index
   @subject = Subject.all.includes(:posts => [:user])
   @interests_array = []
   if current_user.interests != "null"
     JSON.parse(current_user.interests).each do |f|
       if Subject.find(f)
         @interests_array.push(Subject.find(f))
       end
   end
  end
 end
end

1 个答案:

答案 0 :(得分:0)

知道了,不需要嵌套表单。我也在使用错误的模型。