0

我正在尝试使用 Rails 4 制作应用程序。

对于这个问题,我有 4 个相关模型,分别是 Project、Scope、Disclosure、Finalise。

这些协会是:

项目.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)}

范围.rb

belongs_to :project
has_one :disclosure
has_one :finalise

accepts_nested_attributes_for :disclosure,  :finalise

披露.rb:

  belongs_to :scope

完成.rb:

  belongs_to :scope #, counter_cache: true

在我的项目控制器中,我有一个定义为:

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

我的目标是让该操作仅显示标记为已完成和公开的项目(因为这些范围在 Finalize 和 Disclosure 模型中定义。

在我的disclosure.rb中我有

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

我的披露表中有一个名为 :allures 的属性

在我的 finalise.rb 中,我有:

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

我的 finalize 表中有一个名为 :draft 的属性。

在我的项目索引视图中,我有:

<% @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 %>

在我的 routes.rb 中,我有:

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

我不知道的部分是如何制作视图,拿起项目#all 动作?

当我尝试在我的 url 中输入 projects#all 时,我得到的项目被标记为草稿(因此不符合我在 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

我认为合并功能可能需要添加一些东西才能从项目、范围到最终确定/披露。

4

0 回答 0