2012-04-13 9 views
0

Mein Ziel ist es, den About-Bereich der Site halbjährlich zu aktualisieren. Ich möchte dies mit benannten Ressourcen tun. Mein Problem ist, dass das Formular nicht in der DB gespeichert wird und auf die About-Seite weitergeleitet wird, nachdem ich auf die Schaltfläche "Create Text" geklickt habe.Formular speichert nicht! rails

Ich habe meine Routen, Controller und Ansichten angeschaut, aber ich weiß nicht, was ich falsch mache. Jede Hilfe wird geschätzt. Hier

ist die Ausgabe der Konsole:

Started POST "/about" for 127.0.0.1 at 2012-04-13 17:45:29 -0700 
Processing by StaticPagesController#about as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"kmkSyhhqrHiwtIEMd8R1+EEh1ic7688h7lNFW9FnMUM=", "text"=> {"title"=>"", "text"=>"asdfasd"}, "commit"=>"Create Text"} 
Text Load (0.2ms) SELECT "texts".* FROM "texts" WHERE "texts"."id" = ? LIMIT 1 [["id", 6]] 
Text Load (0.2ms) SELECT "texts".* FROM "texts" WHERE "texts"."id" = ? LIMIT 1 [["id", 7]] 
Text Load (0.1ms) SELECT "texts".* FROM "texts" WHERE "texts"."id" = ? LIMIT 1 [["id", 8]] 
Rendered static_pages/about.html.erb within layouts/application (0.7ms) 
Rendered shared/_header.html.erb (1.5ms) 
Rendered shared/_footer.html.erb (1.1ms) 
Completed 200 OK in 30ms (Views: 15.5ms | ActiveRecord: 1.1ms) 

Hier ist die about.html.erb Ansicht:

1 <div id="container_about"> 
2 <%= image_tag "chocolate_lady.jpg", id: "about_image" %> 
3 <div id="right_column_about" > 
4  <h1> Who we are </h1> 
5  <%= @text1.text %> 
6  <br /> 
7  <br /> 
8  <%= @text2.text %> 
9  <br /> 
10  <br /> 
11  <%= @text3.text %> 
12 </div> 
13 </div> 

Hier ist die Form Ansicht:

4 <%= flash[:notice] %> 
5 <%= flash[:status] %> 
6 
7 <%= form_for @about, :url => { :action => 'save_about'} do |f| %> 
8 
9 <div class="field"> 
10  <%= f.label :title %><br /> 
11  <%= f.text_field :title %> 
12 </div> 
13 <div class="field"> 
14  <%= f.label :text %><br /> 
15  <%= f.text_area :text %> 
16 </div> 
17 
18 <div class="actions"> 
19  <%= f.submit %> 
20 </div> 
21 <% end %> 
22 

Die Form html :

<form accept-charset="UTF-8" action="/about" class="new_text" id="new_text" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"><input name="authenticity_token" type="hidden" value="kmkSyhhqrHiwtIEMd8R1+EEh1ic7688h7lNFW9FnMUM="></div> 

<div class="field"> 
<label for="text_title">Title</label><br> 
<input id="text_title" name="text[title]" size="30" type="text"> 
</div> 
<div class="field"> 
<label for="text_text">Text</label><br> 
<textarea cols="40" id="text_text" name="text[text]" rows="20"></textarea> 
</div> 

<div class="actions"> 
<input name="commit" type="submit" value="Create Text"> 
</div> 
</form> 
01 Hier

ist meine Harke Routen:

product_photos GET /product_photos(.:format)   product_photos#index 
       POST /product_photos(.:format)   product_photos#create 
new_product_photo GET /product_photos/new(.:format)  product_photos#new 
edit_product_photo GET /product_photos/:id/edit(.:format) product_photos#edit 
product_photo GET /product_photos/:id(.:format)  product_photos#show 
       PUT /product_photos/:id(.:format)  product_photos#update 
       DELETE /product_photos/:id(.:format)  product_photos#destroy 
      root  /        static_pages#home 
     products  /products(.:format)    ProductPhotos#index 
     about  /about(.:format)     static_pages#about 
     contact  /contact(.:format)     static_pages#contact 
     policy  /policy(.:format)     static_pages#policy 
     new_text  /about/new(.:format)    static_pages#new_about 
    show_text  /about/:id(.:format)    static_pages#show_about 
       POST /about(.:format)     static_pages#save_about 

Hier meine Routen sind:

7 match '/products' => 'ProductPhotos#index' 
8 match '/about' => 'static_pages#about' 
9 match '/contact' => 'static_pages#contact' 
10 match '/policy' => 'static_pages#policy' 
11 match '/about/new/' => 'static_pages#new_about', :as => :new_text 
12 match '/about/:id' => 'static_pages#show_about', :as => :show_text 
13 match '/about/' => 'static_pages#save_about', via: 'post' 

Hier ist mein Controller:

12 def show_about 
13  @about = Text.find(params[:id]) 
14 
15  respond_to do |format| 
16  format.html 
17  format.json { render json: @about } 
18  end 
19 end 
20 
21 def new_about 
22  @about = Text.new 
23  respond_to do |format| 
24  format.html # new_about.html.erb 
25  format.json { render json: @about } 
26  end 
27 end 
28 
29 def save_about 
30  @about = Text.new(params[:text]) 
31  
32  respond_to do |format| 
33  if @about.save 
34   format.html { redirect_to show_about_path(@about), notice: 'Product photo was successfully created.' } 
35   format.json { render json: @about, status: :created, location: @about } 
36  else 
37   format.html { redirect_to action: 'new_about', notice: 'Product photo wasn\'t save'} 
38   format.json { render json: @about.errors, status: :unprocessable_entity } 
39  end 
40  end 
41 end 
42 
+0

eine HTTP-Methode, um zu sehen ist Ihre HTML-Formular mit method = post richtig zu machen? –

+0

Ja, ich werde den Beitrag aktualisieren, um das zu zeigen. – cj3kim

+0

'match '/ about /' => 'static_pages # save_about', über: 'post'' scheint nicht richtig. Es sollte '/ about' ohne abschließenden Schrägstrich entsprechen. Wenn das nicht funktioniert, sehen Sie sich die Reihenfolge Ihrer Routen an. Vielleicht verbraucht ein früher definierter Pfad den Beitrag. –

Antwort

3

8 match '/about' => 'static_pages#about' entspricht dem gleichen Weg wie 13 match '/about/' => 'static_pages#save_about', via: 'post'

Seit sie beide passen /about und die generische ist zuerst, diese wird verwendet werden. Entweder legen Sie die spezifischere Route zuerst match '/about/' => 'static_pages#save_about', via: 'post' und die generische nach, oder ändern Sie die generische Route, damit sie :get wie match '/about' => 'static_pages#about', via: :get hört. Durch Hinzufügen von :get speziell wird es niemals eine :post verbrauchen.

Grundsätzlich, wenn Sie rake routes laufen Sie für jeden Pfad wie

 
    users GET /users(.:format)   users#index 
      POST /users(.:format)   users#create 
new_user GET /users/new(.:format)  users#new 
edit_user GET /users/:id/edit(.:format) users#edit 
+0

Ich verbrachte einen Tag damit. Könnte eine Woche gewesen sein! Vielen Dank! – cj3kim

Verwandte Themen