5

Iam त्रुटि निम्नलिखित database.but दिखाए जाने के लिए कुछ डेटा सम्मिलित करने का प्रयासरूटिंग त्रुटि कोई मार्ग मैचों [पोस्ट] "/ पुस्तक/बनाने"

Routing Error 

No route matches [POST] "/book/create" 

रूप submittion के लिए कोड new.html.erb है

<h1>Add new book</h1> 
<%= form_tag :action => 'create' %> 
<p><label for="book_title">Title</label>: 
<%= text_field 'book','title' %></p> 
<p><label for="book_price">Price</label>: 
<%= text_field 'book','price'%></p> 
<p><label for="book_subject">Subject</label>: 
<%= text_field 'subject','subject'%></p> 
<p><label for="book_description">Description</label><br/> 
<%= text_area 'book','description'%></p> 
<%= submit_tag "Create"%> 
<%= link_to 'Back',{:action=>'list'}%> 

routers.rb

Library::Application.routes.draw do 
    get "book/list" 

    get "book/show" 

    get "book/new" 

    get "book/create" 

    get "book/edit" 

    get "book/update" 

    get "book/delete" 

    resources :books, :only => [:new, :create] 
    match '/books' => 'books#create', :via => :post 

यहाँ है new.html.erb

के लिए एचटीएमएल कोड है
<h1>Add new book</h1> 
<form accept-charset="UTF-8" action="/book/create" method="post"> 
<p><label for="book_title">Title</label>: 
<input id="book_title" name="book[title]" size="30" type="text" /></p> 
<p><label for="book_price">Price</label>: 
<input id="book_price" name="book[price]" size="30" type="text" /></p> 
<p><label for="book_subject">Subject</label>: 
<input id="subject_subject" name="subject[subject]" size="30" type="text" /></p> 
<p><label for="book_description">Description</label><br/> 
<textarea cols="40" id="book_description" name="book[description]" rows="20"> 
</textarea></p> 
<input name="commit" type="submit" value="Create" /> 
<a href="/book/list">Back</a> 

यहाँ bookcontoller.rb

class BookController < ApplicationController 
    def list 
     @books = Book.find(:all) 
    end 
    def show 
     @book = Book.find(params[:id]) 
    end 
    def new 
     @book = Book.new 
     @subjects = Subject.find(:all) 
    end 
    def create 
     @book = Book.new(params[:book]) 
     if @book.save 
      redirect_to :action => 'list' 
     else 
      @subjects = Subject.find(:all) 
      render :action => 'new' 
     end 
    end 
    def edit 
     @book = Book.find(params[:id]) 
     @subjects = Subject.find(:all) 
    end 
    def update 
     @book = Book.find(params[:id]) 
     if @book.update_attributes(params[:book]) 
     redirect_to :action => 'show', :id => @book 
     else 
     @subjects = Subject.find(:all) 
     render :action => 'edit' 
     end 
    end 
    def delete 
     Book.find(params[:id]).destroy 
     redirect_to :action => 'list' 
    end 
    def show_subjects 
     @subject = Subject.find(params[:id]) 
    end 
end 
+0

और आपके नियंत्रण में क्या है आर? डीफ बनाओ ..... अंत ?? क्या यह थ्रू है? – swapnesh

+0

नियंत्रक कोड शामिल है – chinchu

उत्तर

12
सिर्फ

अपने router.rb फ़ाइल में post "book/create" शामिल करें

+0

हाँ इस लाइन को जोड़ने के दौरान यह हो रहा है – chinchu

0

स्वच्छ अपने routes.rb फाइल है सिर्फ इस शामिल करने के लिए:

Library::Application.routes.draw do 
    resources :books, :except => [:index] do 
    collection do 
     get :list 
     get :show_subjects 
    end 
    end 
end 
2

मैं क्या आपके सवाल का आप के खिलाफ लड़ रहे हैं से देख सकते हैं से रेल सम्मेलन जो सब कुछ कठिन बनाता है। आपको:

  • केवल resources :books routes.rb
  • उपयोग में प्रपत्र सहायक form_for(@book) जो सही रूप उत्पन्न होगा new.erb में एक पुस्तक बनाने के लिए किया है।

मैं निम्नलिखित गाइड रेल guides.The का एक अच्छा पढ़ने की सलाह देते हैं, विशेष रूप से अपने प्रश्न के लिए प्रासंगिक हैं और अपनी समस्याओं को ठीक करने के लिए कैसे: