0

私の目標は、サイトのaboutセクションを半定期的に更新することです。名前付きリソースを使用してこれを実行したいと思います。私の問題は、フォームがデータベースに保存されず、[テキストの作成]ボタンをクリックするとバージョン情報ページに転送されることです。

ルート、コントローラー、ビューを確認しましたが、何が間違っているのかわかりません。どんな助けでも大歓迎です。

コンソール出力は次のとおりです。

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)

about.html.erbビューは次のとおりです。

 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>   

フォームビューは次のとおりです。

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 

フォーム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>

これが私のレーキルートです:

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

これが私のルートです:

 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'

これが私のコントローラーです:

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   
4

1 に答える 1

3

8 match '/about' => 'static_pages#about'と同じルートに一致します13 match '/about/' => 'static_pages#save_about', via: 'post'

どちらも一致/aboutし、一般的な方が最初にあるため、これが使用されます。より具体的なルートを最初match '/about/' => 'static_pages#save_about', via: 'post'に配置し、一般的なルートを後に配置するか、一般的なルートを変更して like をリッスンする:getようにしmatch '/about' => 'static_pages#about', via: :getます。:get具体的に追加することで、 :post.

基本的に、実行すると、次rake routesのようなすべてのパスのHTTPメソッドが表示されます

    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
于 2012-04-14T08:30:00.270 に答える