2015-03-28 5 views
0

Я использую драгоценный камень 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?

+0

Одним из вариантов может быть сделать что-то вроде этого, используя: as, post '/ public_activity/activity /: activity_id/comments', чтобы: 'comments # create', as: 'public_activity_activity_comments'. Но я надеюсь на что-то более элегантное. – Donato

ответ

0

IMHO, вам нужно всего лишь сыграть с вашей полиморфной ассоциацией и формой, Public_Activity будет записывать действия, если вы правильно настроите эту любую модель.

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