Работа через «Ruby on rails 3 essential training» Я столкнулся с проблемой с моими маршрутами и URL-адресами. Я создал sujects_controller с действием «list» и «show». В моем локальном хосте, когда я вхожу в: localhost: 3000.subjects/list, я получаю сообщение об ошибке, 'не удалось найти тему с id = list' Но когда я вхожу в: localhost: 3000.subjects. Я получаю список, который должен был появиться при вводе первого URL-адреса. Кроме того, после ввода этого второго URL-адреса у меня есть ссылки для Show, Edit и Delete. Когда я наводил указатель мыши на ссылку «Показать» в нижней части страницы, будущий вывод читает localhost.3000/subject (3). Эта ссылка работает. Но, согласно инструкциям моих инструкторов, он должен читать, localhost.3000/themes/show/3. По каким-то причинам мои ссылки и/или действия не работают должным образом, и я не уверен, почему, поскольку я следую инструкциям.CRUD в рубине на рельсах. Маршрутизация
Вот мой subjects_controller.rb файл:
class SubjectsController < ApplicationController
def index
list
render('list')
end
# def index
# show
# render('show')
# end
def list
@subjects = Subject.order("subjects.position ASC")
#@subjects = Subject.all
end
def show
@subjects = Subject.find(params[:id])
end
def new
@subjects = Subject.new
end
def create
@subject = Subject.new(params[:subject])
if @subject.save
redirect_to(:action => 'list')
else
render('new')
end
end
end
Вот мой list.html и show.html файл:
<div class="subject list">
<h2>Subjects</h2>
<table class="listing" summary="Subject list">
<tr class="header">
<th> </th>
<th>Subject</th>
<th>Visible</th>
<th>Pages</th>
<th>Actions</th>
</tr>
<% @subjects.each do |subject| %>
<tr>
<td><%= subject.position %></td>
<td><%= subject.name %></td>
<td class="center"><%= subject.visible ? 'yes' : 'no' %></td>
<td class="center"><%= subject.pages.size %></td>
<td class="actions">
<%= link_to("Show", {:action => 'show', :id => subject.id}, :class => 'action show') %>
<%= link_to("Edit", '#', :class => 'action edit') %>
<%= link_to("Delete", '#', :class => 'action delete') %>
</td>
</tr>
<% end %>
</table>
Show.html
<%= link_to("<< Back to list", {:action => 'list'}, :class => 'back-link') %>
<div class="subject show">
<h2>Show Subject</h2>
<table summary="Subject detail view">
<tr>
<th>Name</th>
<td><%= @subject.name %></td>
</tr>
<tr>
<th>Position</th>
<td><%= @subject.position %></td>
</tr>
<tr>
<th>Visible?</th>
<td><%= @subject.visible ? 'true' : 'false' %></td>
</tr>
<tr>
<th>Created</th>
<td><%= @subject.created_at %></td>
</tr>
<tr>
<th>Updated</th>
<td><%= @subject.updated_at %></td>
</tr>
</table>
</div>
И мой файл config/routes.rb:
Rails.application.routes.draw do
root :to=>"demo#index"
get 'demo/index'
get 'demo/hello'
get 'demo/other_hello'
resources :subjects
get 'subjects/list' => 'subjects#list'
get 'subjects/list' => 'subjects#show'
get 'subjects/create' => 'subjects#create'
инструктор никогда не показывает его routes.rb файл, так что я только начал с помощью получает, чтобы получить мои действия на работу. Ресурсы: субъекты не могли позаботиться обо всем, поэтому я использовал GET. Также в моем subject_controller я def: индекс для отображения списка. Если я этого не сделаю, ничего не получится. Я, очевидно, новичок во всем этом, но люблю узнавать об этом, и любая информация ценится. Я посмотрел на рельсы, направляющиеся от гидов, но это не помогло мне. Это больше понятие/теория, почему мои ссылки/действия не работают, о которых мне было бы очень интересно услышать. Спасибо за любую информацию!
Хорошо это начинает иметь смысл, но я до сих пор немного путать. В моем файле confiq/routes.rb у меня есть «предметы/список» => «предметы # список», за которыми следуют ресурсы: предметы. Теперь, с моего сервера, если я вхожу в localhost.3000/subject/list, все работает нормально. Но когда я наводил указатель мыши на шоу, он все еще не говорит localhost.3000/themes/show5. Но вместо этого localhost.3000/subject/5. Как я могу показать действие шоу в моем URL-адресе. Как я должен маршрутизировать файл routed.rb, чтобы сделать это –
Я не уверен, почему это происходит, но я думаю, что эта строка в вашем 'routes.rb'' get 'subject/list' => 'subject # show'' и remove это тоже 'get 'themes/create' => 'themes # create'' – Sontya