Рельсы - маршруты и области применения

Я пытаюсь сделать приложение с Rails 4.

У меня есть 4 соответствующих модели для этого вопроса: Проект, Область, Раскрытие, Завершение.

Ассоциации являются:

Project.rb:

has_one :scope
accepts_nested_attributes_for :scope

В моей модели project.rb я попытался определить области как:

 scope :visible, -> { joins(:disclosures).group("projects.id").merge(Disclosure.full_disclosure)}

  scope :finalised, -> { joins(:finalises).group("projects.id").merge(Finalise.published)}

Scope.rb

belongs_to :project
has_one :disclosure
has_one :finalise

accepts_nested_attributes_for :disclosure,  :finalise

Disclosure.rb:

  belongs_to :scope

Finalise.rb:

  belongs_to :scope #, counter_cache: true

В контроллере моих проектов у меня есть действие, определенное как:

  def all
    @projects = Project.visible.finalised
    render 'index'
  end

Моя цель состоит в том, чтобы в этом действии были показаны только проекты, помеченные как завершенные и общедоступные (так как эти области определены в моделях Finalize и Disclosure.

В моем раскрытии.rb у меня есть

      scope :full_disclosure, lambda {where('allusers' == true)}

В моей таблице раскрытия есть атрибут:allures

В моем finalise.rb у меня есть:

  scope :published, lambda {where('draft' == false )}

В моей таблице финализации есть атрибут: черновик.

В моем представлении индекса проектов у меня есть:

<% @projects.in_groups_of(3) do |group| %>
    <div class="row">
      <% group.compact.each do |project| %>
          <div class="col-md-4">
            <div class="indexdisplay">
            <%= image_tag project.hero_image_url, width: '100%', height: '200px' if project.hero_image.present? %>
                <div class="indexheading"> <%= link_to project.title, project %> </div>
              <div class="indexsubtext">    <%= truncate(project.description, :ommission => "...", :length => 250) %></div>
               </div>
          </div>
            <% end %>
            </div>

      <% end %>

В моем route.rb у меня есть:

 resources :projects do
    get 'projects/all' => 'projects#all', :as => 'all_current_projects'
 end

Часть, которую я не знаю, это как сделать вид, подобрать проект # все действия?

Когда я пытаюсь набрать проекты # все в моем URL, я получаю проекты, которые помечены как черновики (поэтому не соответствуют области, которую я определил в своем finalise.rb). Я не знаю, правильно ли я выбрал критерии в областях, которые я пытался объединить в project.rb, и в любом случае я не знаю, как заставить мое индексное представление работать с этим действие контроллера.

Я застрял. То, что я написал, явно не работает - (потому что черновики включаются в вывод, когда я набираю project#all в браузере; а также потому, что я не знаю, как заставить представление работать с определенными мною областями. в модели и контроллере.

Когда я граблю маршруты, я получаю:

project_all_current_projects GET      /projects/:project_id/projects/all(.:format)                                                    projects#all
                   project_available_students GET      /projects/:project_id/projects/currently_available_students(.:format)                           projects#currently_available_students
                   project_available_sponsors GET      /projects/:project_id/projects/currently_available_sponsors(.:format)                           projects#currently_available_sponsors
            project_expiring_student_projects GET      /projects/:project_id/projects/expiring_soon_students(.:format)                                 projects#expiring_soon_students
            project_expiring_sponsor_projects GET      /projects/:project_id/projects/expiring_soon_sponsors(.:format)                                 projects#expiring_soon_sponsors

Я думаю, что функции слияния может понадобиться что-то добавленное к ней, чтобы перейти от проектов к сфере охвата, чтобы завершить / раскрыть ее.

0 ответов

Другие вопросы по тегам