如何在Rails中通过ajax执行除CRUD之外的其他操作?

时间:2011-10-29 20:53:55

标签: jquery ruby-on-rails ajax

所以我是RoR中的新手Ajax,并且在某些操作结束后首先遇到执行 .js.erb 文件的问题。通过'某个动作',我的意思是不是由Rails生成的默认值,因为那些似乎工作正常。

这是我得到的:

  • index.html.erb

    <%= form_tag(:action => 'add_comment', :remote => true) do |c| %>
        Name:
        <%= text_field :comment, :name %>
        <br/>
        Comment: 
        <br/>
        <%= text_area :comment, :text, :cols => 30, :rows => 10 %>
        <br/><br/>
        <%= submit_tag 'Add comment' %>
    <% end %>
    
  • comments_controller.rb 中的操作add_comment:

    def add_comment
            @comment = Comment.new(params[:comment])
            @comment.save
    
            respond_to do |format|
                    format.html { redirect_to comments_path }
                    format.js
            end
    end
    
  • 的routes.rb

    match 'comments/add_comment' => 'comments#add_comment'
    

然而,通过刷新页面添加了注释 - add_comment.js.erb未执行(将add_comment和add_comment.js.erb两个动作重命名为'create'时)。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

<%= form_tag add_comment_path, :remote => true do %>
  ...
<% end %>

在您的路线中:

resources :comments do
  post :add, :on => :collection
end