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