Nie powiedziałbym aby to akurat było problemem, zazwyczaj i tak samemu trzeba podawać url ( w sensie http://guides.rubyonrails.org/routing.html#path-and-url-helpers )
CRSF, kodowanie i rodzaj metody jest dodawany z automatu. Oprócz tego masz odpowiednią przestrzeń nazw dla parametrów ( którą też można zmienić poprzez opcję as
), którą możesz dodatkowo zagnieżdżać poprzez fields_for.
Co do ustawienia domyślnych ustawień dla wszystkich formularzy, to tak jak już było wspomniane gem simple_form ładnie upraszcza sprawę, można definiować całe bloki takie jak ten
[code=ruby]
<%= eee.label :fname, ‘Imię’ %>
<%= eee.text_field :fname, class:‘klasa’, placeholder:‘Wpisz swoje imię’ %>
[/code]
zamieniasz w
<%= eee.input :fname %>
efekt końcowy jest ten sam przy mniejszej ilości powtarzającego się kodu, plus dodatkowo masz błędy obok pola, i schemat do tłumaczeń takich jak podpowiedzi, placeholder, label oraz wiele innych ( zapraszam do dokumentacji ), np. coś ala twitter bootstrap:
[code=ruby]# config/initializers/simple_form.rb - ustawienia domyślne i wrappery
config.wrappers :bootstrap, :tag => ‘div’, :class => ‘control-group’, :error_class => ‘error’ do |b|
b.use :html5
b.use :placeholder
b.use :label
b.wrapper :tag => ‘div’, :class => ‘controls’ do |ba|
ba.use :input
ba.use :error, :wrap_with => { :tag => ‘span’, :class => ‘help-inline’ }
ba.use :hint, :wrap_with => { :tag => ‘p’, :class => ‘help-block’ }
end
end
w widoku masz
<%= form.input :field_name %>
co jest odpowiednikiem
<%= form.label :field_name, t('simple_form.labels.model_name.field_name') %>
<%= form.text_field :field_name, placeholder: t('simple_form.placeholders.model_name.field_name') %>
<%- if form.error(:field_name).present? %>
<%= form.error(:field_name) %>
<% end -%>
<%- if t('simple_form.hints.model_name.field_name').present? %>
<%= t('simple_form.hints.model_name.field_name') %>
<% end -%>
[/code]
tak więc z simple_form naprawdę robi się DRY ;)