Rails - 路由和范围

时间:2015-07-09 04:44:55

标签: ruby-on-rails routes named-scopes

我正在尝试使用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模型中定义。

在我的披露中。我有

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

我的披露表中有一个名为:诱惑

的属性

在我的finalise.rb中,我有:

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

我的终结表中有一个名为: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 action?

当我尝试在我的网址中键入项目#all时,我会得到标记为草稿的项目(因此不符合我在finalise.rb中定义的范围)。我不知道我是否在我试图在project.rb中合并的范围中没有正确地选择标准,并且无论如何,我不知道如何使我的索引视图与此一起工作控制器动作。

我被困住了。我写的清楚不起作用 - (因为当我在浏览器中键入项目#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 个答案:

没有答案