2010-05-14 1 views
0

У меня есть модель пользователя, что HAS_ONE User_Profile и User_Profile belongs_to пользователямаршрутизации использует идентификатор действия и действия имеет ID после отправки формы

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

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%> 

А на rountes у меня есть:

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

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

users/1/personal 

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

Unknown action 

No action responded to 1. 

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

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

+0

После многих часов, пытаясь понять это, все было просто. Просто перезагрузите сервер. X_X –

ответ

0

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

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

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

Возможно, это поможет кому-то.