首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails非RESTful困境?

Rails非RESTful困境?
EN

Stack Overflow用户
提问于 2011-08-05 03:23:49
回答 1查看 149关注 0票数 1

我目前有一个非常简单的模型“优惠券”。出于显而易见的原因,我突然对在模型中添加两个字段"redeem_code“和"redeemed”感兴趣。

我想让商家基于代码兑换优惠券的观点。

我能想到的最简单的方法就是这样做:

代码语言:javascript
运行
复制
  def redeem
    #renders the page
  end

  def redeem_post
    redeem_code = params[:redeem_code]
    deal = Deal.find_by_redeem_code(redeem_code)

    if deal.nil? 
      # BUG: Somehow here you will be logged out 
      redirect_to deals_path
    else 
      if deal.update_attribute(:redeemed, true)
        redirect_to deals_path
      end
    end
  end

就我而言,rails并不真正支持非restful接口。我昨晚试着挖掘表单助手,但我什么也找不到,所以我很快就拼凑了一些东西:

代码语言:javascript
运行
复制
<form action="<%= deals_redeem_post_path %>" method="post">

  <table>
    <tr>
      <th> Code: </th>
      <td> <input type="text" name="redeem_code" /> </td>
    </tr>
    <tr>
      <th></th>
      <td> <input type="submit" text="Submit" /> </td>
    </tr>
  </table>

</form>

我正在使用devise。我现在遇到的错误是,当我的用户提交此表单时,他/她将自动注销。

有什么想法可以让我解决这个问题或者更优雅地实现它吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-05 03:28:28

我的猜测是您缺少自动生成的身份验证令牌(阻止Cross Site Request Forgery (CSRF))。您想要使用表单的helper for,它会自动生成它。

代码语言:javascript
运行
复制
<%= form_for(:coupon, :url => deals_redeem_post_path) do |f| %>

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6947385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档