如何显示和编辑连接模型中的唯一记录?

时间:2017-02-10 05:35:07

标签: ruby-on-rails

User,SearchOption,Search三种模式。

User has_many :searches, through: :search_options
Search has_many :users, through: :search_options

我需要通过SearchOptions编辑来调整搜索结果。用户应该只看到他的选项,但如果我做了类似的事情:

<%= f.fields_for :search_option do |ff| %>

它为我提供了搜索的所有选项。实际上我用另外一个实例变量@searchoption = SearchOption.where(user_id: USER.ID, search_id: SEARCH.ID)做了它,但我不喜欢这样。

如何只输出一个连接模型记录?

更新
这是一些更丑陋的代码:
表格

<%= form_for @search do |f| %>
        <%= f.label 'Projects' %>
          <%= f.collection_check_boxes(:project_ids, current_user.projects.regular_projects, :id, :title) do |b| %>
                <%= b.check_box + b.text %>
          <% end %>
        <%= f.fields_for @search_option do |ff| %>
                <%= ff.label 'Only private users' %>
                  <%= ff.check_box(:only_profiles, id: 'only-profiles') %>
                <%= ff.label 'Only companies' %>
                  <%= ff.check_box(:only_groups, id: 'only-profiles') %>
              <%= ff.label 'Cities' %>
                <%= ff.text_area :cities, size: "80x10", placeholder: '' %>
        <% end %>
            <%= f.submit 'Save', class: 'btn btn-accept' %>
    <% end %>

控制器

def edit
    @search = Search.find(params[:id])
    if !@search.users.exists?(current_user.id)
      redirect_to tasks_path
    else
      @search_option = @search.search_options.where(user_id: current_user.id).first
    end
  end

0 个答案:

没有答案