2014-01-27 4 views
0

Использование рельсов 4 У меня есть класс Userbookrank, где пользователь оценивает книгу в библиотеке, а таблица включает user_id, book_id и rank. Userbookranks_controller.rb является следующее:рельсы Нет совпадений маршрутов [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 Panda нет ответа на этот вопрос, который помогает мне. Так что, пожалуйста, может кто-нибудь мне помочь? – 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

Смежные вопросы