2017-05-18 4 views
2

Ich befolge ein Tutorial, wo ich eine Art Verzeichnis-Website machen muss. Da eine Seite benötigt wird, auf der ein Benutzer eine Rezension schreiben kann, erstelle ich die Ansichten und das Formular für die Rezensionen. Die Schritte, die ich gemacht habe, waren:NoMethodError in Ansichten einer Rails App

1 - a Bewertungen Ordner in app/views/Bewertungen Erstellt:

2 - Erstellt in diesem Ordner eine teilweise genannt _forms.html.erb für die Bewertungen

<%= simple_form_for(@review) do |f| %> 
    <%= f.error_notification %> 

    <div class="form-inputs"> 
    <%= f.input :content, required: true %> 
    <%= f.hidden_field :place_id, required: true, value: @place_id %> 
    </div> 

    <div class="form-actions"> 
    <%= f.button :submit %> 
    </div> 
<% end %> 

3 - um die Überprüfung/_form auf den Plätzen machen/show ich hinzufügen:

<div class="col-md-9"> 
    <h3>Reviews by People</h3> 
    <%= render 'reviews/form' %> 
    </div> 

einen Fehler Haben Sie, wenn Sie das Formular zu machen versucht, so dass ich zu PlacesController ging und ich habe die folgende Zeile des Codes auf die show-methode:

# GET /places/1 
    # GET /places/1.json 
    def show 
    @review = Review.new 
    end 

Meine routes.rb-Datei hat die Routen für die Bewertungen. Der Fehler, den ich bekam, war:

NoMethodError in Places#show 
Showing C:/workinrails/myyelpapp/app/views/reviews/_form.html.erb where line #5 raised: 
undefined method `content' for #<Review:0x9200a30> 
Trace of template inclusion: app/views/places/show.html.erb 

app/views/reviews/_form.html.erb:5:in `block in _app_views_reviews__form_html_erb___988880813_76383660' 
app/views/reviews/_form.html.erb:1:in `_app_views_reviews__form_html_erb___988880813_76383660' 
app/views/places/show.html.erb:13:in `_app_views_places_show_html_erb__530556826_71913768' 

ich irgendwelche Code-Schnipsel für ein besseres Verständnis zur Verfügung stellen kann

+0

Ein wenig Verwirrung in Ihren Namen hier. Seiten gegen Orte Haben Sie vielleicht sowohl PagesController als auch PlacesController und vergessen, show action im richtigen PlacesController – rohan

+0

hinzuzufügen, korrigierte ich diese Information über die Frage, danke. Ich habe einen PagesController und einen PlacesController. Auf meinem PagesController gibt es nur die Def-Home-Methode mit nichts drin. In meinem PlacesController in der Show-Aktion habe ich das: @review = Review.new – samureira

+0

Was sind die Spalten in Review-Tabelle. – rohan

Antwort

1

eine neue Spalte hinzufügen Tabelle mit dem Namen Inhalt Bewertungen

bundle exec rails g migration add_content_to_reviews content:string 

bundle exec rake db:migrate 
0

Sie benötigen eine bestimmte Spalte hinzufügen Name in Ihrer Tabelle

Schienen g Migration AddColumnNameToTableName column_name: Datentyp

dann

Schienen db:

Hinweis migrieren: - Sie sollten den Unterschied kennen b/w form_for & form_tag,

form_for

Ihr hier form_for verwenden, so dass Sie nur in bereits DB Spaltenname

form_tag

form_tag Sie müssen Namensspalte nicht sapecify erforderlich, können Sie einen beliebigen Namen erstellt haben, angeben, sollten Sie wird erhalten Parameter von diesem Wert in Ihrem Controller