簡體   English   中英

在Action:Create中使用帶有response_to js的ActionController :: UnknownFormat

[英]ActionController::UnknownFormat with respond_to js in Action:Create

我的route.rb

  post 'home/create'
  get  'home/create'

我的HomeController

   def create
       @review_n = Review.create(review_params)
       if @review_n.errors.empty?
         respond_to do |format|
           format.js { render 'create', locals: {review_name: @review_n.review_n, review_body: @review_n.review_body} }
         end
       else
         render 'index'
       end
    end      

我的create.js.erb

    $(function() {
      $(".wrap-body").append("<div> tmp </div>");
    });

導軌說:HomeController#create中的ActionController :: UnknownFormat

我想在html.erb中發送數據而無需重新加載頁面。 請幫幫我!

UPD:

我的html.rb

      <%= form_tag home_create_path, :method => 'post', :remote => true do %>
            <%= text_area_tag  'review[review_body]', nil  %>
            <%= text_field_tag 'review[review_name]', nil %>
            <%= submit_tag 'send' %>
      <% end %>

您的代碼是否命中了respond_to塊之外的respond_to render 'index'調用?

通常,您會將所有render調用都放入respond_to塊中,因此很明顯,邏輯的所有路徑都可以響應所有期望的格式:

def create
  @review_n = Review.create(review_params)

  respond_to do |format|
    if @review_n.errors.empty?
      format.js { render 'create', locals: {review_name: @review_n.review_n, review_body: @review_n.review_body} }
    else
      format.js { render 'index' }
    end
  end
end

這需要同時具有create.js.erbindex.js.erb (針對錯誤情況)。

另外,按照@sahil的建議,您的route.rb不應聲明get'home get 'home/create' create'-此操作會修改數據,因此通過GET訪問數據並不安全。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM