<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>litblaky</title>
    <link>https://ruby-china.org/litblaky</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>mailer 里面不支持 button_to 吗？</title>
      <description>&lt;p&gt;我正在学《Agile Web Development with Rails 4》。按着书做完了发邮件的功能后，接着就添加测试。OrderNotifier 的 shipped 部分的测试过不了，并提示说：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OrderNotifierTest#test_shipped:
ActionView::Template::Error: undefined method `protect_against_forgery?' for #&amp;lt;#&amp;lt;Class:0x8fc1428&amp;gt;:0x94fd978&amp;gt;
    app/views/line_items/_line_item.html.erb:10:in `_app_views_line_items__line_item_html_erb__432531698_80360200'
    app/views/order_notifier/shipped.html.erb:8:in `_app_views_order_notifier_shipped_html_erb___724239349_78115340'
    app/mailers/order_notifier.rb:23:in `shipped'
    test/mailers/order_notifier_test.rb:13:in `block in &amp;lt;class:OrderNotifierTest&amp;gt;'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后看了一下 &lt;strong&gt;_line_item.html.erb&lt;/strong&gt; 里的第 &lt;strong&gt;10&lt;/strong&gt; 行，发现是一个 &lt;strong&gt;button_to&lt;/strong&gt; 的调用（这是 play time 时加入的）。于是加了个条件，令它在 mailer 渲染时不被调用。最后测试就通过了。&lt;/p&gt;

&lt;p&gt;虽然问题解决了，但是很不明白为什么会有这个问题。上网搜了一下发现不止我遇到这问题，但是他们都只讨论折中的解决方案。现在只知道 &lt;strong&gt;protect_against_forgery&lt;/strong&gt; 与 CSRF 有关，然后就没别的头绪了。你们有遇到过这样的问题吗？求解答～&lt;/p&gt;</description>
      <author>litblaky</author>
      <pubDate>Wed, 09 Apr 2014 00:09:50 +0800</pubDate>
      <link>https://ruby-china.org/topics/18483</link>
      <guid>https://ruby-china.org/topics/18483</guid>
    </item>
  </channel>
</rss>
