Rails Без RESTful дилеммы? - PullRequest
       3

Rails Без RESTful дилеммы?

1 голос
/ 04 августа 2011

У меня сейчас очень простая модель "Купон".Мне неожиданно стало интересно добавить еще два поля, «redeem_code» и «redeemed» в модель по понятным причинам.

Я бы хотел, чтобы торговец выкупил купон на основе кода.

Самый простой подход, который я могу придумать, это сделать что-то вроде этого:

  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 на самом деле не поддерживает non restful интерфейсы.Вчера вечером я попытался найти помощников по форме, но ничего не смог найти, поэтому просто добавил что-то очень быстрое:

<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>

Я использую устройство.Ошибка, с которой я сталкиваюсь сейчас, заключается в том, что когда мой пользователь отправляет эту форму, он / она автоматически выходит из системы.

Есть идеи, как я могу это исправить или реализовать это более элегантно?

1 Ответ

3 голосов
/ 04 августа 2011

Я предполагаю, что вам не хватает маркера подлинности (который предотвращает Межсайтовая подмена запросов (CSRF) ), который генерируется автоматически.Вы хотите использовать форму для помощника, который генерирует это автоматически.

<%= form_for(:coupon, :url => deals_redeem_post_path) do |f| %>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...