我是rails新手,并试图帮助解决问题。Ruby中的自定义路由
我需要为访客用户设置一个自定义路由,以查看来自特定子域的公共内容。即当访客用户转到subdomain.myapp.com时,他们将看到访客内容,如果他们登录,他们将看到特定于其角色的内容并添加内容。所以,我已经建立了以下路线:
match '/', to: "lessons#custom", constraints: { subdomain: 'hbec2' }, via: [:get]
match '/', to: 'home#index', constraints: { subdomain: 'www' }, via: [:get]
root :to => "home#index"
get "welcome" => "lessons#welcome", :as => "welcome"
constraints subdomain: 'hbec2' do
resources :home do
collection do
get '/lessons/:lesson_category_id', to: 'lessons#custom', as: 'lessons'
get "custom"
get "load_categories"
get "load_subcategories"
get "load_child_subcategories"
end
end
end
constraints subdomain: 'www' do
resources :home do
collection do
get "sub_categories"
get "categories" => "lessons#welcome"
get "welcome"
end
end
end
目前,当用户去hbec2.myapp.com他们得到期望的结果,因为它的路线是在我的教训控制器我的自定义功能,使我的自定义.html.erb。但是,当他们点击自定义视图中的链接时,它们将被重定向到index.html.erb而不是保留在该视图上,该视图具有部分html来呈现结果。
我所希望的是他们会留在custom.html.erb中,所以我添加了额外的资源获得'/ lessons /:lesson_category_id',以:'lessons#custom',如:'lessons'希望是它会寻找的。但没有运气。这里是我的自定义功能从控制器和自定义视图
自定义功能(这个想法是为来宾用户提供信息。来宾用户属于HBEC组织,因此他们登录到hbec.myapp.com并获得正确的结果(hbec的类别列表和hbec最近的课程列表),当单击课程类别时,应该向他们显示该类别中的课程(查询返回正确的结果,因为课程是最近的,当您单击类别它说什么也没有),而是显示他们什么都没有。因为它去,而不是停留在custom.html.erb
def custom
params[:per_page] = 5
@organization = Organization.find_by_id(HBEC_ORG_ID)
@organization_categories = []
@categories = LessonCategory.all
@organization_categories = @categories.where("organization_id = #{HBEC_ORG_ID}")
@categories = @categories.where("organization_id = #{HBEC_ORG_ID}").limit(15)
@lesson_category = LessonCategory.find_by_id(params[:lesson_category_id]) unless params[:lesson_category_id].blank?
@lesson_subcategory = LessonSubCategory.find_by_id(params[:lesson_sub_category_id]) unless params[:lesson_sub_category_id].blank?
keyword = params[:keyword] unless params[:keyword].blank?
@lessons = Lesson.scoped
# @lessons = @lessons.where("is_disable = ? ", false)
@lessons = @lessons.where("organization_id = #{HBEC_ORG_ID}")
@lessons = @lessons.where(["lessons.id = ? OR lessons.name LIKE ? ", keyword.to_i, "%#{keyword}%"]) unless keyword.blank?
@lessons = @lessons.where(["lesson_category_id = ?", params[:lesson_category_id]]) unless params[:lesson_category_id].blank?
@lessons = @lessons.where(["lesson_sub_category_id = ?", params[:lesson_sub_category_id]]) unless params[:lesson_sub_category_id].blank?
params[:page] = 1 if params[:page].blank?
max_pages = (@lessons.count/per_page.to_i).to_i + 1
params[:page] = max_pages if params[:page].to_i > max_pages
@lessons = @lessons.order(sort_column + ' ' + sort_direction + ', lessons.created_at DESC').paginate(:per_page => per_page, :page => params[:page])
@current_page = params[:page]
@toal_pages = max_pages
end
custom.html.erb
0至index.html.erb,<div class="pages page-work gray-bg medium-grey" id="">
<div class="container">
<!-- Header -->
<header>
<div class="span-12">
<div class="span7 lesson_header">
<%= render "/lessons/breadcrum" %>
</div>
<div class="span5 pull-right lesson_header">
<%= render "lessons/lesson_header" %>
</div>
</div>
</header>
<!-- End Header -->
<!-- Article -->
<article class="showdetail">
<div><%= render "shared/flash_messages" %></div>
<%= render "/organizations/organization_categories", :organization => @organization, :organization_categories => @organization.lesson_categories %>
</article>
<!-- recommended not necessary for hbec
<%= render :partial => "/lessons/recommended" %>
-->
<p class="adjust">Most Recent Lessons</p>
<ul class="cat_thumbnails plugin-filter-elements portfolio-items" id="items">
<% if @lessons.present? %>
<% @lessons.each do |lesson| %>
<li class="col-sm-4 lessonpad mix illustration li-back">
<a href="<%= "#{lesson_path(lesson)}" %>">
<!-- Portfolio image -->
<% avatar = (lesson.image.present? ? "#{lesson.image.url}" : "/assets/placeholder_01.png") %>
<img src="<%= avatar %>" alt="Treble" class="recent-lessons-icon">
<!-- Portfolio name, activated on hover -->
<h3 align="center" class="category-text"><%= lesson.title %></h3>
</a>
<%= render "latest_lessons", :lesson => lesson %>
</li>
<% end %>
<% else %>
<%
category_or_subcategory_name = ""
category_or_subcategory_name = " '#{@lesson_category.name}' " if @lesson_category.present?
category_or_subcategory_name = " '#{@lesson_subcategory.name}' " if @lesson_subcategory.present?
%>
<h3 class="error"> No <%= category_or_subcategory_name %> from custom Lessons were found</h3>
<% end %>
</ul>
<% if @lessons.present? && @current_page.to_i < @max_pages.to_i %>
<div class="center loadmore">
<button class="btn btn-success load_more" onclick="load_more('/lessons', 'lessons')">Load More</button>
</div>
<% end %>
<% if @categories.present? %>
<p class="adjust">Choose a Category for Lessons</p>
<ul class="cat_thumbnails plugin-filter-elements portfolio-items" id="">
<% @categories.each do |cat| %>
<li class="category-li col-sm-4 subpad mix illustration <%= cat.slag %> ">
<% link = cat.lesson_sub_categories.present? ? "/home/sub_categories?id=#{cat.id}" : " #{lessons_url(:lesson_category_id => cat.id)}" %>
<a href="<%= link %>">
<!-- Portfolio image -->
<% avatar = (cat.avatar.present? ? "#{cat.avatar.url}" : "/assets/placeholder_01.png") %>
<img src="<%= avatar %>" class="choose-category-icon">
<!-- Portfolio name, activated on hover -->
<h3 align="center" class="category-text"><%= cat.name %></h3>
</a>
<br>
</li>
<% end %>
</ul>
<% end %>
<% if @categories.present? && LessonCategory.all.count > 5 %>
<div class="center">
<button class="btn btn-success load_more" onclick="window.location.href = '/home/categories'">Load More
</button>
</div>
<% end %>
</article>
</div>
</div>
<%= hidden_field_tag :total_pages, @toal_pages %>
<%= hidden_field_tag :current_page, @current_page %>