2016-03-04 4 views
0

, поэтому я новичок в рельсах и в настоящее время просматриваю учебник для него на tutorialspoint. То, что я получил до сих пор, - это контроллер и соответствующее представление для него, которое является файлом erb. Это код для просмотра:Проблема с Rails с рендерингом

<% if @books.blank? %> 
<p>There are not any books currently in the system.</p> 
<% else %> 
<p>These are the current books in our system</p> 

<ul id = "books"> 
    <% @books.each do |c| %> 
    <li><%= link_to c.title, {:action => 'show', :id => c.id} -%></li> 
    <% end %> 
</ul> 

<% end %> 
<p><%= link_to "Add new Book", {:action => 'new' }%></p> 

Однако, когда я пытаюсь посмотреть этот счет локального хоста: 3000, имея

rails server 

команду запуска сервера WEBrick в фоновом режиме на локальном хосте: 3000, он продолжает направлять меня по умолчанию в мой браузер, который обрабатывается сервером по следующему пути:

/Users/hassanali/.rbenv/versions/2.2.3/lib/ruby/gems/2.2 0,0/драгоценные камни/Railties-4.2.4/Библиотека/рельсы/шаблоны/рельсы/добро пожаловать/index.htm l.erb

вместо фактического зрения в поле зрения folder..which моей рельсам папке приложения является

/Users/hassanali/Desktop/library/app/views/book/list.html.erb

Я пытался исправить это целую вечность и безрезультатно. Кто-нибудь знает, что я могу сделать?

ответ

4

Потому что вы не определили root_path для своего приложения.

В config/routes.rbroot_path определить для него, например:

root 'book#list' 
+0

Cheers dude! Работал ! :) –

2

Вы можете сказать Rails, что вы хотите '/' в пути к используя root controller#action.

Например, у вас был контроллер, который выглядел так.

class BooksController < ActionController::Base 
    def index 
    @books = Books.all 
    end 

    def show 
    @book = Books.find(params[:id]) 
    end 
end 

Если вы хотите «/», чтобы маршрут к вашему методу index, вы могли бы сделать следующее config/routes.rb.

Rails.application.routes.draw do 

    root 'books#index' 

    # Other routes here... 

end 

В качестве примечания, если добавить две root вызовов методов, он будет использовать последний в файле маршрутов.

http://guides.rubyonrails.org/routing.html#using-root

Поскольку у вас есть show и new действие ссылки вы также, вероятно, хотите, чтобы эти маршруты, а также. Рекомендуется использовать схемы маршрутизации RESTful. Rails предоставляет полезный метод под названием resources, который создает все маршруты и вспомогательные методы, необходимые для CRUD ресурса.

Это может выглядеть следующим образом.

Rails.application.routes.draw do 

    root 'books#index' 

    # A books resource 
    resources :books 

end 

http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

Я призываю вас прочитать руководство Rails по маршрутизации, чтобы вы понять ваши варианты.

Смежные вопросы