Пара вещей:
@ mu-is-too-short пример корректного метода обновления. Вам следует отправлять хэш атрибутов (params[:ad]
) объекту @ad
, а не параметру params[:id]
.
Явное написание таких маршрутов может стать очень грязным. Вы можете заменить все, что вы написали в файле routes.rb
, следующим:
* * 1010
Это даст вам возможность использовать такие вещи, как
redirect_to ad_path(@ad)
вместо
redirect_to "/ads/#{@ad.id}"
Кроме того, ваша форма будет намного проще в управлении и менее подвержена ошибкам, потому что вы можете просто сказать:
<%= form_for @ad do |f| %>
<p><b>Name</b><br /><%= f.text_field :name %></p>
<p><b>Description</b><br /><%= f.text_area :description, rows: 10 %></p>
<p><b>Price</b><br /><%= f.text_field :price %></p>
<p><b>Seller</b><br /><%= f.text_field :seller_id %></p>
<p><b>E-mail</b><br /><%= f.text_field :email %></p>
<p><b>Img url</b><br /><%= f.text_field :img_url %></p>
<p><%= f.submit "Update" %></p>
<% end %>
Кроме того, я рекомендую немного изучить семантику HTML. Форма, которая больше похожа на эту, легче поддерживать и стилизовать, а также она более доступна:
<%= form_for @ad do |f| %>
<fieldset>
<%= f.label :name %>
<%= f.text_field :name %>
</fieldset>
<fieldset>
<%= f.label :description %>
<%= f.text_area :description, :rows => 10 %>
</fieldset>
<!-- etc -->
<fieldset>
<%= f.submit 'Update' %>
</fieldset>
<% end %>
Если вы еще этого не сделали, я настоятельно рекомендую прочитать все Rails Guides , особенно руководство по маршрутизации .