1.Это плохая практика - оставлять неиспользованные действия REST?
Насколько я могу ответить, это не плохая практика.Если вам не нужно индексное действие для контроллера, у вас его нет, точка.Но вы должны исключить это действие из ваших маршрутов, например, resource :resources, :except => [:index]
.Это может пригодиться, когда вы спасаетесь от ошибок, потому что NoTemplateError - это не то же самое, что RoutingError (что означает, что вы можете пропустить спасение чего-то в работе).
Кроме того, это хороший маленький помощник для разработки.Когда вы случайно пишете ссылку на неиспользуемый индекс контроллера, на странице, содержащей ссылку, появляется ошибка, если вы исключили действие из своих маршрутов.Если вы этого не сделаете, вы увидите ошибку только после нажатия на ссылку, поскольку маршрут действителен (но не имеет функции / шаблона / чего бы то ни было).
2.Вышеприведенный сценарий звучит так, будто я делаю это правильно?что я хотел, чтобы это было в home # index для перечисления всех ресурсов, а не ресурсов # index?
Я не могу ответить на это без понимания вашей бизнес-логики / рабочего процесса приложения.Но если вам это не нужно, вы оставляете его.
Если это косметическая проблема (например, ресурс # index в основном необходим, но под другим URL), вы можете просто создать маршрут match "home", :to => "resources#index"
.Это исключит ваш пользовательский домашний контроллер, и вы можете использовать индексное действие для resources
, которое будет доступно в /home
и /resources
.Но опять же, это может быть не лучшим вариантом для вашего рабочего процесса / логики, так что это всего лишь предложение.
3.Если это плохая практика, то как мне создать их вручную?
На странице Rails Guides *1024* есть отличная страница обо всех ваших потребностях в маршрутизации.Взгляните туда.
4.Что делать, если я хочу изменить URL-адрес по умолчанию?
Rails путь - это соглашение по конфигурации .Означает, что эти методы являются соглашением рельсов.Хорошо придерживаться этого соглашения, поэтому каждый раз, когда вы возвращаетесь к своему приложению, меняющему вещи, вы по крайней мере знаете, как оно работает из-за этого соглашения.Даже рельсовые кодеры без каких-либо знаний о вашем приложении могут вносить изменения в него быстрее, когда все придерживаются этого соглашения. Этот забавный рекламный ролик RoR vs PHP объясняет это очень хорошо.
Вы можете изменить их, но не должны.
5,Учитывая, что я оставляю все URL-адреса одинаковыми.Если я захожу в / resources / new и нажимаю «отправить» в форме, где написано
После создания, вы обычно перенаправляете на что-то или визуализируете новое действие в вызове create, чтобы сохранить информацию о текущем объекте (например, ошибки), которые будут потеряны, когда вы будете делать перенаправление.В настоящее время вы находитесь в действии create (без рендеринга / перенаправления другого действия), поэтому rails ожидает шаблон create.html.erb
.
Пример:
def create
@resource = Resource.new(params[:resource])
if @resource.save
# record valid and saved, so redirecting to /resources/:id
redirect_to @resource
else
# record not valid. rendering the new.html.erb template
# (HINT the new action is NOT called here).
render :action => :new
end
end
Имейте в виду, что .new создаетновый объект, но он не сохраняется в базе данных, пока вы не вызовете, например, .save для него.
Это всего лишь мои мнения и опыт по этому вопросу, поэтому, если кто-то более опытный считает, что что-то не так, я рад прочитать комментарий и обновить свой ответ.