Я пытаюсь создать простую систему управления контентом, используя Twitter Bootstrap для небольшого сайта, и у меня возникла проблема с представлениями.
Версия Rails 3.0.10
Я хочу позволить пользователю создавать свои собственные страницы, поэтому у меня есть контроллер Pages , который имеет все ваши стандартные методы RESTful. Поскольку к ним может быть применено грубое обращение, доступ к ним может получить только зарегистрированный администратор.
Итак ... У меня есть Public контроллер, который устанавливает @ pages и @ page переменных экземпляра и использует их для отображения их в общедоступном шоу. вид.
Вот публичный контроллер - довольно просто:
def index
@pages = Page.all
end
def show
@pages = Page.all
@page = Page.find(params[:id])
end
Причина, по которой в методе index есть переменная экземпляра @pages, заключается в том, что у меня есть страница приветствия, которая загружается, и я передаю @pages для динамического заполнения элементов навигации:
<div class="nav-collapse">
<ul class="nav">
<li><%= link_to "Welcome", public_index_path, :class => 'active', :id => 'menu_home' %></li>
<% @pages.each do |page| %>
<li><%= link_to page.title, public_path(page) %></li>
<% end %>
</ul>
</div><!--/.nav-collapse -->
Содержимое метода show контроллера Public (который содержит отдельную страницу) передается в оператор <%= yield %>
в файле Applicaton.html.erb :
<div class="container">
<%= yield %>
<hr>
<footer>
<p>My site</p>
</footer>
</div> <!-- /container -->
Пока что все работает нормально.
Проблема в том, что когда я нажимаю на ссылку, которая приводит меня к public_path(page)
- я получаю содержимое так, как оно должно появиться, но я теряю все свои стили. На самом деле я получаю ошибку 404 в моих таблицах стилей:
Все эти таблицы стилей прекрасно загружались на странице http://localhost:3000/public, но когда она переходит на http://localhost:3000/public/1 - это когда все стили исчезают. Но они оба используют один и тот же макет.
Вот что показывает файл журнала при выполнении запроса:
Started GET "/public/1" for 127.0.0.1 at 2012-03-03 21:14:49 -0600
Processing by PublicController#show as HTML
Parameters: {"id"=>"1"}
[1m[35mPage Load (1.0ms)[0m SELECT "pages".* FROM "pages"
[1m[36mPage Load (0.0ms)[0m [1mSELECT "pages".* FROM "pages" WHERE "pages"."id" = 1 LIMIT 1[0m
Rendered public/show.html.erb within layouts/application (24.0ms)
Completed 200 OK in 63ms (Views: 51.0ms | ActiveRecord: 1.0ms)
Started GET "/public/stylesheets/bootstrap.css" for 127.0.0.1 at 2012-03-03 21:14:50 -0600
ActionController::RoutingError (No route matches "/public/stylesheets/bootstrap.css"):
Rendered c:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/actionpack-3.0.10/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (2.0ms)
Started GET "/public/stylesheets/bootstrap-responsive.css" for 127.0.0.1 at 2012-03-03 21:14:50 -0600
ActionController::RoutingError (No route matches "/public/stylesheets/bootstrap-responsive.css"):
Rendered c:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/actionpack-3.0.10/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.0ms)
Started GET "/public/stylesheets/elements.less" for 127.0.0.1 at 2012-03-03 21:14:51 -0600
ActionController::RoutingError (No route matches "/public/stylesheets/elements.less"):
Rendered c:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/actionpack-3.0.10/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (3.0ms)
Спасибо за взгляд