Я использую драгоценный камень public_activity. Чтобы использовать драгоценный камень, вам не нужно создавать для него контроллер активности. Так что я этого не сделал. Однако у меня есть контроллер комментариев. Я хочу иметь следующий URL-адрес помощника за комментарий создают действия:url helper для пространства имен вложенная модель
public_activity_activity_comments_path(@activity)
Я попробовал две вещи в моих маршрутах и оба потерпели неудачу. Во-первых, я попытался с помощью маршрута имен:
namespace :public_activity do
resources :activity do
resources :comments
end
end
Это производит ошибку:
ActionController::RoutingError - uninitialized constant PublicActivity::CommentsController:
Поскольку у меня нет PublicActivity :: контроллер упражнения, я попытался это вместо:
get '/public_activity/activity/:activity_id/comments/new', to: 'comments#new'
post '/public_activity/activity/:activity_id/comments', to: 'comments#create'
Однако, похоже, это не создает никаких помощников URL-адресов, так как это дает мне следующую ошибку:
NoMethodError - undefined method `public_activity_activity_comments_path' for #<#<Class:0x007f868e1b7760>:0x007f868e1afd58>:
Причина, почему я хочу, маршрут, как это потому, что в моем комментарии взгляд, commentable может быть любая модель, поэтому я предпочитаю иметь полиморфный вид:
<%= form_for [commentable, Comment.new] do |f| %>
...
Am Я не повезло? Мне нужно будет хардкор URL для form_for?
Одним из вариантов может быть сделать что-то вроде этого, используя: as, post '/ public_activity/activity /: activity_id/comments', чтобы: 'comments # create', as: 'public_activity_activity_comments'. Но я надеюсь на что-то более элегантное. – Donato