![](/img/trans.png)
[英]ActionController::UnknownFormat with respond_to js for AJAX
[英]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.erb
和index.js.erb
(針對錯誤情況)。
另外,按照@sahil的建議,您的route.rb不應聲明get'home get 'home/create'
create'-此操作會修改數據,因此通過GET
訪問數據並不安全。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.