У меня есть следующий единственный маршрут:
scope '/seller' do
resource :seller_profile, :path => "/profile", :only => [:show, :edit, :update]
end
и следующий контроллер:
class SellerProfilesController < ApplicationController
before_filter :validate_user_as_seller
def show
@seller_profile = current_user.seller_profile
end
def edit
@seller_profile = current_user.seller_profile
end
def update
@seller_profile = current_user.seller_profile
if @seller_profile.update_attributes(params[:seller_profile])
redirect_to(seller_profile_path, :notice => 'Profile was successfully updated.')
else
render :action => "edit"
end
end
end
Я использую единственный маршрут, учитывая, что пользователь должен пройти аутентификацию перед получением доступа кконтроллер и, следовательно, я могу получить seller_profile от пользователя, вошедшего в систему.
Это работает как шарм, только с одной проблемой.Когда я редактирую seller_profile и происходит ошибка проверки, форма снова редактируется, и ошибки отображаются правильно.Проблема в том, что rails добавляет к URL идентификатор отредактированной записи.Например, когда я впервые редактирую запись, URL-адрес выглядит следующим образом:
http://0.0.0.0:3000/seller/profile/edit
, но если форма отправляется с ошибками проверки, сама форма отображается снова в
http://0.0.0.0:3000/seller/profile.2
где 2Идентификатор редактируемой записи.
Форма выглядит следующим образом:
<%= simple_form_for @seller_profile do |f| %>
<%= f.input :name %>
<%= f.input :description %>
<%= f.submit %>
<% end %>
Все, как сказано, прекрасно работает, но я бы полностью замаскировал идентификатор в URL.Что мне делать?