2016-04-02 20 views
0

Kullanıcıların (Devise ile doğrulanmış) kullanıcıların gönderebileceği basit bir web sitesi yazıyorum. Yeni bir gönderi oluşturulduktan sonra, yayına yönlendirilmeyeceği bu hatayı alıyorum. İşte benim Mesajlar denetleyicisi var:raylar - NoMethodError in PostsController # tanımlanmamış yöntem oluştur `post_url '

Rails.application.routes.draw do 
    devise_for :users 
    resources :users do 
    resources :posts 
    end 
    root 'posts#new' 
end 

mesajlar kaynak belki benim denetleyicisi bu olmalıdır düşünce kullanıcılar içinde yuvalanmış beri:

if @post.save 
     redirect_to [email protected] 
    end 
İşte
class PostsController < ApplicationController 
    before_filter :authenticate_user! 

    def new 
    @post = current_user.posts.new 
    end 

    def create 
    @post = current_user.posts.new(post_params) 
    if @post.save 
     redirect_to @post 
    end 
    end 

    def show 
    @post = Post.find_by_id(params[:id]) 
    end 

    private 
    def post_params 
     params.require(:post).permit(:title, :content) 
    end 
end 

benim routes.rb var

Ancak bu bir MessageServer # create error içinde bir SyntaxError üretir.

Denetleyicinin oluşturulduktan sonra postayı yeniden yönlendirmesini engelleyen bir sorun olan herkes görülebilir mi? Herhangi bir yardım çok takdir edilecektir.

cevap

3

bu deneyin -

redirect_to [current_user,@post] 

YA,

yardımcı olur umut!

+0

Bu işe yarayacak gibi görünüyor ama şimdi aldım: Hiçbir yol eşleşmiyor {: action => "show",: controller => "posts",: id => nil,: user_id => # } gerekli anahtarlar eksik: [: id] Bazı nedenlerden dolayı kimliğin doğru şekilde iletilmediği görünüyor. –

+0

@AdamLazarus evet, kullanıcı kimliği arıyor. Cevabı düzenledim, lütfen bir kez deneyin. – dp7

+0

Hayır şans! Yine de aynı hatayı veriyor. Ben de [current_user, @post] ile denedim ve bu da işe yaramadı. Hata mesajı şu şekildedir: id => nil ve gerekli anahtarlar eksik: [: id] Yani yeni gönderinin kimliği doğru bir şekilde rotaya geçirilmediğinde sorun değil mi? –

0

Modelinizde iç içe özniteliklere izin verdiniz mi? Denetleyicide, yeni yerine derlemeyi kullanmak istiyorsunuz.

+0

Evet, sahibim. Yeni yerine yapı kullanmanın avantajı ne olurdu? Birbirlerinin takma adlarının olduğu izlenimindeydim. –

İlgili konular