Rails 3.1 javascript文件用法

时间:2011-11-14 00:01:22

标签: jquery ruby-on-rails-3.1 coffeescript

我有一个rails 3.1应用程序,我可以创建邮件爆炸。我有一个包含邮件链接的所有爆炸清单,用于邮寄特定爆炸(使用ajax)。我在我的blasts控制器中有一个我想要使用的自定义动作。当我点击链接时,它想要调用show.js.coffee而不是mail.js.coffee。如何强制它使用我创建的动作。当我将所有内容都放在我的控制器和show.js.coffee的show动作中但不是邮件动作和mail.js.coffee等时,一切正常。

这是我的爆炸部分

<td><% if can? :create, Blast%><%= link_to "Mail",blast,:action => :mail  :confirm => "Are you sure?",:remote => true%><%end%></td>

这是控制器中的方法

def mail
  @customers = Customer.all
  @mailcustomers = Customer.where(:opted_out => false)
  @blast = Blast.find(params[:id])
end

这是在我的mail.js.coffee文件

 <% @mailcustomers.each do |f|%>
   <% BlastMailer.mail_blast(f,@blast).deliver %>
 <%end%>

在routes.rb

resources :blasts do
  collection {  post :mail  }
end

2 个答案:

答案 0 :(得分:0)

编辑:在我原来的回答中,我对在.js.coffee文件中使用ERB犹豫不决。但在进一步调查中,事实证明Rails 3.1允许在特殊情况下使用ERB为响应:remote => true表单操作而提供JS的情况。)

我认为你的问题是

:action => :mail  :confirm => "Are you sure?"

尝试在:mail后添加逗号。

答案 1 :(得分:0)

我想出了我需要做的事情。这是有效的线。

<td>
  <% if can? :create, Blast%>
    <%= link_to "Mail", {:action => :mail, :id=>blast.id}, :method => :post,:confirm => "Are you sure?",:remote => true%>
  <%end%>
</td>