2016-11-04 55 views
1

我有一個表單名稱(反饋),我試圖提交它。HAML rails form_for不調用POST方法

但是,它一直在調用GET HTTP方法。我已經嘗試爲form_for參數添加:method =>:post,但它仍然不起作用。我能知道它爲什麼不調用POST方法嗎?

耙路線:

 Prefix Verb URI Pattern    Controller#Action 
    feedbacks POST /feedback(.:format)  feedbacks#create 
new_feedback GET /feedback/new(.:format) feedbacks#new 
     root GET/      welcome#index 

FeedbacksController

class FeedbacksController < ApplicationController 

    def create 
    @feedback = Feedback.new(feedback_params) 
    @feedback.save 
    end 

    def new 
    @feedback = Feedback.new 
    end 

    private 
    def feedback_params 
     # params.require(:feedback).permit(: ) 
    end 

end 

反饋/ new.html.haml

.container.col-xs-12.col-sm-8.col-sm-offset-2.col-md-8.col-md-offset-2.col-lg-8.col-lg-offset-2 
    .WhiteSpace 

    =fa_icon "coffee 2x" 
    =fa_icon "coffee 2x" 
    =fa_icon "coffee 2x" 
    %h4 Help us serve you better by telling us what you think ! 

    .WhiteSpace 


    %form.form-horizontal 
    =form_for(@feedback, :method => :post) do |feedback| 
     .form-group 
     %feedback.label_field.col-sm-2.control-label <b>Name</b> 
     .col-sm-6 
      =feedback.text_field(:name, :class =>"form-control" ,:placeholder => "Name") 

     .form-group 
     %feedback.label_field.col-sm-2.control-label <b>Email (optional)</b> 
     .col-sm-6 
      =feedback.text_field(:email, :class => "form-control", :placeholder => "Email") 

     .form-group 
     %feedback.label_field.col-sm-2.control-label <b>Tel No. (optional)</b> 
     .col-sm-6 
      =feedback.text_field(:telephone_no, :class => "form-control", :placeholder =>"Telephone No.") 

     -#TODO: Use Ratyrate 
     .form-group 
     %h3.col-sm-2.control-label!="<u>Services</u>" 

     .form-group 
     %feedback.label_field.col-sm-2.control-label <b>Delivery</b> : 
     .col-sm-6 
      =fa_icon "star-o 2x" 
      =fa_icon "star-o 2x" 
      =fa_icon "star-o 2x" 
      =fa_icon "star-o 2x" 
      =fa_icon "star-o 2x" 
     .form-group 
     %feedback.label_field.col-sm-2.control-label <b>Friendliness</b> : 
     .col-sm-6 
      =fa_icon "star-o 2x" 
      =fa_icon "star-o 2x" 
      =fa_icon "star-o 2x" 
      =fa_icon "star-o 2x" 
      =fa_icon "star-o 2x" 
     .form-group 
     %feedback.label_field.col-sm-2.control-label <b>Price </b>: 
     .col-sm-6 
      =fa_icon "star-o 2x" 
      =fa_icon "star-o 2x" 
      =fa_icon "star-o 2x" 
      =fa_icon "star-o 2x" 
      =fa_icon "star-o 2x" 
     .form-group 
     %feedback.label_field.col-sm-2.control-label <b>Message:</b> 
     .col-sm-6 
      =feedback.text_area(:comment, :class => "form-control", :placeholder=> "Comment",:rows =>"10") 

     .form-group 
     =feedback.submit("Submit", :class =>"btn-primary btn-lg btn-block") 

單擊「提交」後,我的輸出如下所示。 enter image description here

+0

而不是':method =>:post',嘗試'url:{action:「create」}' – fanta

回答

3

不嵌套形成

%form.form-horizontal 
    =form_for(@feedback, :method => :post) do |feedback| 

應該

=form_for @feedback, :html => {:class => 'form-horizontal'} do |feedback| 

默認情況下,表單將提交表單與GET方法。但軌道form_for方法默認使用POST。您不需要明確將方法設置爲POST或將操作設置爲create

通常情況下,表單部分呈現在newedit中,並將根據對象的狀態(本例中爲@feedback)提交給創建和更新操作。在更新操作中,form_for方法會將提交的方法設置爲PUT(或PATCH)。明確地將其設置爲POST將會發生衝突。