Маршрутизация использует идентификатор имеет действие, а действие имеет идентификатор после отправки формы

У меня есть модель пользователя, у которой есть_один профиль пользователя, а пользователь_профиль принадлежит_пользователю

в пользовательском контроллере у меня есть:

  def personal
    @user = User.find_by_id(params[:id])
    @user_profile = @user.user_profile
    @user_profile ||= @user.build_user_profile
  end

  def update_personal
    @user = User.find_by_id(params[:id])
    if @user.user_profile.update_attributes(params[:user_profile])
      flash[:notice] = "OK"
      redirect_to @user
    else
      flash[:notice] = "Fail"
      render :action => 'update_personal'
    end
  end

В моем представлении personal.html.erb у меня есть:

<% semantic_form_for @user_profile, :url => { :action => "update_personal"} do |form| %>
  <%= form.inputs %>
  <%=  form.buttons %>
<%end%>

И на маршрутах у меня есть:

map.resources :users, :member => {
         :personal            => :get,
         :update_personal     => :put
        }

Теперь странно то, что я могу сделать:

users/1/personal 

чтобы увидеть форму, но когда я отправляю, я получаю эту ошибку:

Unknown action

No action responded to 1.

Он пытается найти действие с именем 1.

Может ли кто-нибудь указать мне правильное направление?


person Victor Martins    schedule 14.05.2010    source источник
comment
После многих часов попыток понять это... это было просто. Просто перезапустите сервер. Х_Х   -  person Victor Martins    schedule 14.05.2010


Ответы (1)


Я только что снова столкнулся с проблемой и, наконец, понял проблему и нашел решение.

На этот раз я использовал вызов ajax с помощью getJason. Поскольку вызов был get, а в моих маршрутах у меня было update_xxxxxx => :put, маршрут был проигнорирован и использовался по умолчанию :controller/:action/:id.

Мне просто нужно было поставить update_xxxx => :get и проблема была решена.

Может быть, это поможет кому-то.

person Victor Martins    schedule 17.05.2010