2014-01-27 44 views
0

使用rails 4我有一个Userbookrank类,其中用户在库中排列了一本书,并且该表包含user_id,book_id和rank。该userbookranks_controller.rb如下:rails没有路线匹配[POST]

class UserbookranksController < ApplicationController 
    def new 
    @book = Book.find(params[:book_id]) 
    @user = User.find(params[:user_id]) 
    @userbookrank = Userbookrank.new 
    end 

    def create 
    @userbookrank = Userbookrank.new(userbookrank_params) 
    if @userbookrank.save 
     redirect_to userbookrank_path(@userbookrank) 
    else 
     redirect_to :root 
    end 
    end 

    def show 
    @userbookrank = Userbookrank.find(params[:id]) 
    end 

    private 
    def userbookrank_params 
    params.require(:userbookrank).permit(:user_id, :book_id, :rank) 
    end 
end 

new.html.erb文件如下:

排名一本书

<p> Book title: %[email protected] % </p> 
<p> Book author: %[email protected] % </p> 
<%=form_for :userbookrank do |f| %> 
    <%=f.hidden_field :book_id, :value => @book.id%> 
    <%=f.hidden_field :user_id, :value => current_user.id%> 
    <p> 
    <%=f.label :rank %> 
    <br> 
    <%=f.number_field :rank %> 
    </p> 
    <p>  
    <%=f.submit "Rank book"%> 
    </p> 
<% end %> 

show.html.erb文件如下: 你排这本书...

<p>Title: <%[email protected] %> </p> 
<p>Author: <%[email protected] %> </p> 
<p>Rank: <%[email protected] %> </p>  
<p> <%=link_to 'Back to the book menu', userbookranks_path %> </p> 

路由文件包含以下内容:

resources :userbookranks 

,当我提出一个等级存在路由错误:

耙路线包括以下内容:

userbookranks_path GET  /userbookranks(.:format) userbookranks#index 
    POST /userbookranks(.:format) userbookranks#create 
new_userbookrank_path GET  /userbookranks/new(.:format) userbookranks#new 
edit_userbookrank_path GET  /userbookranks/:id/edit(.:format) userbookranks#edit 
userbookrank_path GET  /userbookranks/:id(.:format) userbookranks#show 
    PATCH /userbookranks/:id(.:format) userbookranks#update 
    PUT  /userbookranks/:id(.:format) userbookranks#update 
    DELETE /userbookranks/:id(.:format) userbookranks#destroy 

非常感谢您在提前。

+0

重复:http://stackoverflow.com/questions/19204214/routing-error-no-route-matches-post-posts-new –

+0

@Sampriti熊猫存在这样的问题,可以帮助我没有答案。所以请,有人可以帮我吗? – user3184707

回答

0

你应该new.html.erb改变

<%=form_for @userbookrank do |f| %> 
2

在你new.html.haml,使用您在新的动作初始化@userbookrank对象。

<p> Book title: %[email protected] % </p> 
<p> Book author: %[email protected] % </p> 
<%=form_for @userbookrank do |f| %> 
    <%=f.hidden_field :book_id, :value => @book.id%> 
    <%=f.hidden_field :user_id, :value => current_user.id%> 
    <p> 
    <%=f.label :rank %> 
    <br> 
    <%=f.number_field :rank %> 
    </p> 
    <p>  
    <%=f.submit "Rank book"%> 
    </p> 
<% end %> 
+0

非常感谢你! – user3184707