Так что я получил эти взгляды:DRY контроллер .valid? для создания и обновления с помощью simple_form
new.html.erb
<div class="booyah-box col-xs-10 col-xs-offset-1">
<h1>Expose Your Hidden Gem</h1>
<%= simple_form_for @place do |f| %>
<%= f.input :name, error: "Name is mandatory" %>
<%= f.input :address %>
<%= f.input :description %>
<br />
<%= f.submit 'Create', class: 'btn btn-primary' %>
<% end %>
</div>
edit.html.erb
<div class="booyah-box col-xs-10 col-xs-offset-1">
<h1>Edit Your Place</h1>
<%= simple_form_for @place do |f| %>
<%= f.input :name %>
<%= f.input :address %>
<%= f.input :description %>
<br />
<%= f.submit 'Update', class: 'btn btn-primary' %>
<% end %>
</div>
эта модель: Место. rb
class Place < ActiveRecord::Base
belongs_to :user
has_many :comments, dependent: :destroy
has_many :photos
geocoded_by :address
after_validation :geocode
validates :name, presence: true
validates :address, presence: true
validates :description, presence: true
end
И, наконец, places_controller.rb (Показывая только создание и обновление)
def create
@place = current_user.places.create(place_params)
if @place.save
redirect_to root_path
else
render :new
end
end
def update
@place = Place.find(params[:id])
if @place.user != current_user
return render text: 'Not Allowed', status: :forbidden
end
@place.update_attributes(place_params)
if @place.save
redirect_to root_path
else
render :edit
end
end
Но я стараюсь думать DRY и хочу знать, если есть лучший способ, чтобы сделать проверку на имя адрес и наличие описания, не имея такой же идентичный код как создавать и обновлять части моего контроллера? Я чувствую, что я просто должен писать его один раз ...