как да разбия f.submit от form builder в частично оформление в rails 3?

Създавам многоетапен формуляр и бих искал да използвам повторно кода на бутона в множество изгледи. ето кода, който бих искал да разделя на частично оформление:

<div class="actions">
<%= link_to "Back", previous_wizard_path, :class => 'btn btn-large' %>
<%= f.submit "Next", class: "btn btn-large btn-primary" %>
</div>

Копирах този код в ново частично оформление, наречено „_action_buttons.html.erb“.

Опитвам се да изобразя тази част със следния код:

<%= render 'multi_form/action_buttons' %>

Въпреки това, когато се опитам да стартирам това, получавам следната грешка поради f.submit:

undefined local variable or method `f' for #<#<Class:0x007fbae16c1dc8>:0x007fbae13b33e8>

Извлечен източник (около ред #3):

1: <div class="actions">
2:     <%= link_to "Back", previous_wizard_path, :class => 'btn btn-large' %>
3:     <%= f.submit "Next", class: "btn btn-large btn-primary" %>
4:   </div>

как мога да променя извикването си за изобразяване, така че тази грешка да не се случи? Осъзнавам, че това вероятно е често срещан проблем; помогнете на noob!


person diego    schedule 19.10.2012    source източник


Отговори (2)


  1. Не трябва да нарушавате етикета на формуляра, тъй като това може да причини неочаквано поведение и да наруши четливостта на вашия код.
  2. Ако наистина искате да следвате този подход, една техника е, че можете да прехвърлите променливата на формуляра във вашия шаблон, можете да опитате да направите следното:

    <%= render :partial => 'multi_form/action_buttons', :locals => {:f => f} %>
    
person Sang Do    schedule 19.10.2012
comment
Благодаря за това. Разбирам мисълта ви, но моята цел е да запазя кода СУХ. Имам абсолютно същия код на бутона в много изгледи за този многоетапен формуляр. Имате ли някакви мисли за други начини, по които това може да се постигне, без да се нарушава маркерът на формуляра? - person diego; 19.10.2012
comment
Не е лошо да имате бутон за изпращане, който е подобен на другите форми. Ето още няколко неща, които можете да подобрите: 1. можете да групирате стила за изпращане за всички бутони за изпращане; 2. можете да създадете общ формуляр, след което да подадете различни параметри, за да генерирате формуляра; 3. Виждам, че използвате ERB двигател, опитайте Haml, мисля, че е по-чист и по-лесен за кодиране. - person Sang Do; 25.10.2012

Можете да използвате по-кратката форма без ключовата дума :partial.

Проверете този въпрос Rails: объркан съм със синтаксиса за предаване на локални стойности на части

person Prasanna Natarajan    schedule 19.10.2012