2

我有一个页面呈现Ideas. 每个项目旁边都有一个索赔按钮。应该发生的情况是用户单击 Claim 按钮,Idea#claim控制器操作运行,Claim 按钮变暗。

实际发生的是……什么都没有。甚至没有 Rails 错误页面,这就是我被卡住的原因。相关片段如下:

路线.rb

  resources :ideas do 
    collection do
      post 'claim'
    end
  end

想法控制器#claim

  def claim
    @idea = Idea.find(params[:idea_id])
    current_user.claim(@idea)
    respond_to do |format|
      format.js   { render :nothing => true } 
    end
  end

_idea.html.erb 部分

<span class="idea-actions" id=<%="idea"+idea.id.to_s%>>
    <%= link_to "Claim", {method: "post", action: "claim", idea_id: idea.id}, {class: 'claim', remote: true}  %>
</span>

想法.js.coffee

$ ->
  $('.claim').bind 'ajax:success', ->
    alert 'Ajax success!'

这绝对是我第一次尝试做这样的事情,而我的 CoffeeScript/JS 几乎不存在。任何建议或指示将不胜感激。

编辑 1:将代码从 application.js 移动到 idea.js.coffee,使用button_toto切换表单link_to。上面代码中显示的更改。现在,当我单击链接时,绝对没有任何反应。还是不开心!:\

4

2 回答 2

0

尝试移动remote: truehtml_options部分button_to

<%= button_to "Claim", {action: "claim", idea_id: idea.id}, {remote: true, class: 'btn btn-small claim'}  %> 

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-button_to

于 2013-01-02T15:25:42.347 回答
0

将 button_to 修改为更简洁:

<%= button_to "Claim", claim_ideas_path(id: idea.id, format: 'js'),  remote: true  %>

应该这样做。。

于 2013-01-02T15:50:34.080 回答