2010-10-19 37 views

Trả lời

8

Nó được một lúc kể từ khi câu hỏi này đã được đăng - nhưng tôi chỉ cần bỏ ra một thời gian figuring this out & không thể tìm thấy sự giúp đỡ quá nhiều vào trực tuyến này, vì vậy:

Giải pháp là để tạo các tệp .js.erb - một cho thành công và một cho thất bại.

def create 
    @foo = Foo.new(params[:foo]) 
    if @foo.save 
     respond_to do |format| 
      format.html { redirect_to root_path } 
      format.js { render :action => "success"} #rails now looks for success.js.erb 
     end 
    else 
     respond_to do |format| 
     format.html { render :action => 'new'} 
     format.js { render :action => "failure"} #rails now looks for failure.js.erb 
     end 
    end 
    end 
end 

Nếu vẻ như là nếu bạn không chỉ định một tên tập tin, đường ray sẽ tìm kiếm create.js.erb trong cả hai trường hợp (vì format.js được gọi từ tạo). Điều này không tuyệt vời trong trường hợp các tình huống thành công/lỗi vì bạn muốn có hành vi khác nhau cho từng kịch bản - vì vậy hãy ghi đè tên tệp thông qua thuộc tính: action.

Các vấn đề liên quan