Erb 文件里,我将<% %>写入了 Javascript 的 function 里,为什么仍旧被执行?

事情是这个样子。我有一个Contract model,里面有个status我在一个erb文件中,写入

<script>


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

    <button type="button" class="btn btn-primary" οnclick= "post_approve()">审批通过</button>
    <button type="button" class="btn btn-primary" οnclick= "post_reject()">拒绝通过</button>

<div id="reject"></div>
<div id="approve"></div>



当我,在浏览器中载入时,我什么都还没有做,status的值就被设置成了4.当我删掉 function post_approve()这个函数之后,加载页面时,status就被直接复制成了3.
从现象上看,就是,程序直接执行了<% %>里面的内容。
问题1. 是不是ERB文件**一定**会按顺序执行所有的<%%>里面的ruby代码?【即使,是在一个JS function里面的】
问题2.我该怎么实现,我想要的功能. 点击一个按钮,程序会执行一段ruby代码,对一个model进行修改。


回复1:http server在传送页面时是按照顺序来解析的,当遇到<% %>时就把里面的信息传给rails让rails执行再把结果输出,所以当然就被执行了。

要点按钮之后执行ruby代码,你要用POST而不是GET。

回复2:搞清楚哪些东西是在服务器上执行的,哪些能在浏览器上执行的

erb类似于jsp,用来动态产生HTML的,里面的<% %>标签在服务器上就被执行了,返回给浏览器是执行完了的HTML结果

你要执行点击一个按钮去执行一个ruby代码,这个时候需要发出一个请求到服务器,要么提交表单,要么用AJAX方式发一个请求



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值