2011-06-27 16 views
17

Obecnie pracuję nad projektem i napotkałem problem, z którym nigdy wcześniej nie miałem do czynienia. Obecnie robi stronę logowania do logowania, która wymaga od użytkownika rejestracji. Miałem niezdefiniowaną metodę "name'error", a następnie zdałem sobie sprawę, że metoda nie jest nazywana nazwą, nazywała się full_name. Przeszedłem przez wszystkie foldery, aby upewnić się, że żadna metoda lub atrybut nie jest nazywany "name" i zmieniła nazwę na "full_name". Po odświeżeniu przeglądarki otrzymuję następujący błąd, którego wcześniej nie widziałem. Czy niektórzy mogą wyjaśnić, czym jest ten błąd i jak prawdopodobnie mogę go rozwiązać.Brakuje szablonu

Szablon brakuje

Brakujące użytkowników template/tworzyć z {: Używane => [: Erb,: RJS, builder, : rhtml,: rxml], formatuje => [: html ] : w widoku ścieżek pl]} locale => [:: en, "C:/Users/patterd/Dokumenty/Project/app/views"

Odpowiedz

42

ten błąd ma miejsce, jeśli nie przekierowanie w metodzie create twojego kontrolera.

Czy przekierowujesz w metodzie create w kontrolerze lub renderujesz nowy formularz, w przypadku błędu?

Bez przekierowania w metodzie create w kontrolerze należy utworzyć nowy plik o nazwie create.html.erb. Zazwyczaj, po pomyślnym utworzeniu, przekierowanie do innej strony jak pokazano poniżej

def create 
    # some object you want to create 
    # if the object.save is fine 
    # redirect_to object 
    # else 
    # render new with the errors 
    # end 
end 
+0

Posiadam user_Controller i zawiera metodę create. Który następuje 'code'def stworzyć @user = User.new (parametry [: użytkownik]) jeśli @ user.save # Obsługa pomyślnego zapisu. inny @title = „Sign up” czynią „nowy” Koniec koniec – David

+3

OK.after ustawiony, redirect_to jakiejś strony, na przykład przekierowanie: action =>: pokaz, tak, że udaje się do jednej ze stron które masz z rozszerzeniem .html.erb. zazwyczaj będzie to index.html.erb (redirect_to: action =>: index) lub show.html.erb (redirect_to: action =>: show) – felix

+0

Oh okej, mam cię. Dostaję dlaczego otrzymuję ten błąd. Wielkie dzięki. – David

19

W moim przypadku miałem do przetwarzania i renderowania bez widoku.

def return_payment 
    # do lots of stuff 

    head :ok 
end 
+0

To również może działać – David

2

miałem ten sam problem i powodem było to, że lewy przypadkowo inny pusty „tworzyć” metodę :)

2

Generalnie brakuje błąd szablon występuje -Gdy nie masz plik widoku tej metody kontrolera, lub -jeśli metoda jest przeznaczona tylko do obliczeń, które nie mają żadnego pliku widoku, konieczne jest wyrenderowanie/przekierowanie metody.

Jeśli nie wyrenderujesz lub nie przekierujesz metody, wyszukasz stronę widoku bieżącej nazwy metody (w twoim przypadku wyszuka ona plik create.html.erb). Tak, musisz wyrenderować/przekierować metodę .

0

Miałem ten sam problem i właśnie dodałem przekierowanie i zadziałało!

def update 
    @visitor = Visitor.find(params[:id]) 
    if @visitor.update_attributes(visitor_params) 
     flash[:notice] = "Update ok!" 
     redirect_to root_path #just added this line and it worked! 
    else 
     render 'edit' 
    end 
end