繁体   English   中英

rails没有路由匹配[POST]

[英]rails No route matches [POST]

使用rails 4我有一个Userbookrank类,用户在库中对一本书进行排名,该表包括user_id,book_id和rank。 userbookranks_controller.rb如下:

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: %=@book.title % </p>
<p> Book author: %=@book.author.name % </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: <%=@userbookrank.book.title %> </p>  
<p>Author: <%=@userbookrank.book.author.name %> </p>   
<p>Rank: <%=@userbookrank.rank %> </p>    
<p> <%=link_to 'Back to the book menu', userbookranks_path %> </p>

routes文件包括以下内容:

resources :userbookranks

当我提交排名时会出现路由错误: No route matches [POST] "/userbookranks/new"

佣金路线包括以下内容:

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 

非常感谢你提前。

new.html.haml ,使用在新操作中初始化的@userbookrank对象。

<p> Book title: %=@book.title % </p>
<p> Book author: %=@book.author.name % </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 %>

你应该将new.html.erb改为

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM