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
eine HTTP-Methode, um zu sehen ist Ihre HTML-Formular mit method = post richtig zu machen? –
Ja, ich werde den Beitrag aktualisieren, um das zu zeigen. – cj3kim
'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. –