2013-11-08 3 views
0

У меня есть сообщения и сообщения категории Сообщение BELONGS_TO: категории Категория has_many: Сообщения я хочу, когда я создаю новые почтовые рельсы перенаправить меня созданную должность , но когда я использую контроллер сообщенийredirect_to category_post_path (@post)

def create 
     @category = Category.find(params[:category_id]) 
     @post = current_user.posts.build(post_params) 
     if @post.save 
     flash[:success] = "Поздравляем Ваше задание опубликованно" 
     redirect_to category_post_path(@post) 
    else 
    render 'new' 
    end 
    end 

Это

redirect_to category_post_path(@post) 

рельсы дают мне ошибки

Нет маршрутных совпадений {: action => "show",: controller => "posts",: category_id => #,: id => nil,: format => nil} отсутствуют необходимые ключи: [: id]

но я хочу, если @ post.save rails redirect_to создал пост

Помогите пожалуйста.

ответ

1

Держу пари, ваши маршруты выглядеть следующим образом:

resources :categories do 
    resources :posts 
end 

Это создает URL помощника category_post_path, но она нуждается в категорию и пост.

Попробуйте это:

category_post_path @category, @post 
+0

жаль в нубе, но теперь рельсы дает ArgumentError ошибки в PostsController # показать неверное число аргументов (1 для 0) Защиты показать \t \t @posts = Post.find (Params (: id)) – Adyl

+0

Ваша проблема в 'params (: id)' должна быть 'params [: id]'. Обратите внимание на квадратные скобки. Полная строка: '@posts = Post.find (params [: id])'. Если вам нужно объяснение: 'params' - это метод, который возвращает хэш, поэтому' params [: id] 'вызывает метод params, возвращает хэш, а затем извлекается значение для индекса': id'. – Max

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