Как стать автором
Обновить

Комментарии 31

Из этого может полезный гем получиться.

p.s. 1.times do |x| — это, конечно, мощно :)
Аналог конструкции while(false) { } в С, к сожелению, не придумал более изящного спосба далеть такие же ruby. Сама же конструкция весьма удобна, особенно когда нужно делать много проверок, на много удобнее чем писать множество вложенных if… else… end
А until?
не подойдет, разве что только так:
until false # or while true
break if ...
break if ...
result = 'ok'
break
end
case? (-:
a begin...end?
break не работает в begin...end
а как же loop do… end?
о, оказывается такая штука работает
begin
break if…
break if…
result =…
end while false
С робокассой удобно работать, ничего сложного по сути
Никому больше этот код не показывайте. Это не руби, а пхп.
@order = Order.where(:id => params[:id]).first

Мои глаза…

а как надо?
Model.find(id)
Model.find(params[:id])
Этот вариант кинет эксепшн, если такой записи нет. А вариант с where вернет nil.
А чем вас эксепшн не устроил?
Почему ж не к месту? Или вы считаете что отработать эксепшн хуже чем выполнять что-то вроде (как у автора)

break if @order.blank?
Это достойный альтернативный вариант. Он не лучше и не хуже.

Но зачем тогда тыкать носом, если автор выбрал другой вариант, который не хуже?
А найти гем религия не позволила?
Или взять Active Merchant от Evil Martians.
Контроллер очень толстый, выносите лучше все расчеты в модель…
Расчеты — в модель, а заполнение в Presenter.
<form action="<%= @pay_desc['mrh_url'] %>" method="post">
	<input type=hidden name=MrchLogin value="<%= @pay_desc['mrh_login'] %>">
	<input type=hidden name=OutSum value="<%= @pay_desc['out_summ'] %>">
	<input type=hidden name=InvId value="<%= @pay_desc['inv_id'] %>">
	<input type=hidden name=Desc value="<%= @pay_desc['inv_desc'] %>">
	<input type=hidden name=SignatureValue value="<%= @pay_desc['crc'] %>">
	<input type=hidden name=Shp_item value="<%= @pay_desc['shp_item'] %>">
	<input type=hidden name=IncCurrLabel value="<%= @pay_desc['in_curr'] %>">
	<input type=hidden name=Culture value="<%= @pay_desc['culture'] %>">
	<input type=submit value='Оплатить'>
</form>


Мои глаза… Рельсы же дают удобный путь для создания форм!

<%= form_tag @pay_desc['mrh_url'] do %>
  <%= hidden_field_tag 'MrchLogin', @pay_desc['mrh_login'] %>
  <!-- etc -->
  <%= submit_tag 'Pay' %>
<% end %>
У формы конечно кривой htm,l но использовать абстракции везде где только можно тоже не правильный подход.
Надеюсь, мне не придётся после вас дорабатывать приложение.
Какая необходимость в использовании генератора в даном случае? Использовать валидатор тут не к чему, мультиязычного интерфейс тоже. Я бы ещё понял если сделать скажем так (на руби не пишу, пример что бы отразить идею):

<%= form_tag @pay_desc['mrh_url'] do %>
 <% @pay_form_fields.each do |key, value| %>
  <%=
 hidden_field_tag key, value %>
 <% end %>

  <%= submit_tag 'Pay' %>
<% end %>



Говно код останется говно кодом в независимости от такого сколько абстракций и хелперов в нем использовано. И нечего переходить на личности.
Payment::get_hash — это неправильный синтаксис, который по чистой случайности работает. Надо писать Payment.get_hash
Да и get_ тоже лишнее. Можно было бы to_hash
Хочу предостеречь от использования робокассы — никогда не полагайтесь на неё как на единственный источник платежей. Очень частые сбои в работе и неполадки на сервере. У нас после подключения мерчанта webmoney 90% платежей проходит через него, но тут от проекта зависит конечно.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории