2016-10-11 71 views
0

我route.rb的ActionController :: UnknownFormat与行动的respond_to JS:创建

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中的ActionController :: UnknownFormat#create

我想在我的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 %> 
+0

你还可以添加日志吗? – sahil

+1

你也可以改变你的路线到'post'home/create'=>'home#create''吗?为什么你需要'获得'home/create''。 – sahil

+0

我的错误((在我的HomeController:review_n.review_n review_n.review_name – deni5n

回答

0

是您的代码击中render 'index'呼叫是respond_to块外?

通常你会放在respond_to块内的所有render调用,因此很明显,你的逻辑的所有路径可以给所有预期格式进行回应:

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建议,您的routes.rb不应申报get 'home/create' - 这个动作修改数据,所以它是不是安全,使其通过GET访问。

相关问题