因此,我正在使用CoffeeScript,Rails 3.1玩的很开心。我拥有所有常用路线索引,显示,创建,编辑,更新,销毁的资源。
索引视图的格式:remote => true如下:
:remote => true
<%= form_for @todo, :remote => true do |f| %> <div class="field"> <%= f.label :name %><br /> <%= f.text_field :name %> </div> <div class="actions"> <%= f.submit %> </div> <% end %>
在创建控制器中,我具有以下内容:
def create @todo = Todo.new(params[:todo]) respond_to do |format| if @todo.save format.html { redirect_to @todo, notice: 'Todo was successfully created.' } format.json { render json: @todo, status: :created, location: @todo } format.js {render json: @todo } else format.html { render action: "new" } format.json { render json: @todo.errors, status: :unprocessable_entity } end end end
我试图不使用.js.erb视图,因为我宁愿处理返回的JSON并把所有花式追加到待办事项列表上,依此类推。(对我来说更干净)。
在我的todos.js.coffee中,我使用了以下内容:
$(document).ready -> $("#new_todo") .bind "ajax:success", (event, data) -> alert("Ajax SUCCESS!!!")
(是的,只想打开一个警报框是行不通的)我尝试加载,但无法触发此事件。该请求确实成功完成,并添加了新的待办事项。
任何帮助,将不胜感激。谢谢
开始倾倒在rails.js上,想知道是否有任何ajax:回调被提出。
原来他们很好,并且beforeSend和error …等等…错误吗?怎么会这样 新待办事项的创建成功完成,响应是我期望的JSON。但是在逐步执行回调代码时,我注意到一个Invalid label错误。
Invalid label
快速Google稍后将我带到这篇文章http://blog.seqmedia.com/?p=484
原来JSON是作为字符串返回的,Firbug得到了并正确解析了它,因此我可以检查响应。但是rails.js和js通常不知道如何处理字符串并引发上述错误(我可能会默默地说)。
解决方案在response_to中
format.js {render json: @todo, content_type: 'text/json' }
有点感谢Trevor Burnham(例如BTW书)的帮助以及来自序列媒体的Amy,后者的博客文章最终为我提供了解决方案。