<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>gellerseu (LetBugFly)</title>
    <link>https://ruby-china.org/gellerseu</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>Erb 文件里，我将&lt;% %&gt;写入了 Javascript 的 function 里，为什么仍旧被执行？</title>
      <description>&lt;p&gt;事情是这个样子。我有一个 Contract model，里面有个 status 我在一个 erb 文件中，写入&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;script&amp;gt;


function post_approve()
{
    x = document.getElementById("approve");
    x.innerHTML="&amp;lt;% @post.update_attribute( :status , 3) %&amp;gt;";
    window.location.reload();
}
function post_approve()
{
    x = document.getElementById("reject");
    x.innerHTML="&amp;lt;% @post.update_attribute( :status , 4) %&amp;gt;";
    window.location.reload();
}
&amp;lt;/script&amp;gt;

    &amp;lt;button type="button" class="btn btn-primary" onclick= "post_approve()"&amp;gt;审批通过&amp;lt;/button&amp;gt;
    &amp;lt;button type="button" class="btn btn-primary" onclick= "post_reject()"&amp;gt;拒绝通过&amp;lt;/button&amp;gt;

&amp;lt;div id="reject"&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div id="approve"&amp;gt;&amp;lt;/div&amp;gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当我，在浏览器中载入时，我什么都还没有做，status 的值就被设置成了 4.当我删掉 function post_approve() 这个函数之后，加载页面时，status 就被直接复制成了 3.
从现象上看，就是，程序直接执行了&amp;lt;% %&amp;gt;里面的内容。
问题 1. 是不是 ERB 文件&lt;strong&gt;一定&lt;/strong&gt;会按顺序执行所有的&amp;lt;%%&amp;gt;里面的 ruby 代码？【即使，是在一个 JS function 里面的】
问题 2.我该怎么实现，我想要的功能。点击一个按钮，程序会执行一段 ruby 代码，对一个 model 进行修改。&lt;/p&gt;</description>
      <author>gellerseu</author>
      <pubDate>Fri, 04 Apr 2014 21:01:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/18408</link>
      <guid>https://ruby-china.org/topics/18408</guid>
    </item>
  </channel>
</rss>
