路由使用ID具有操作,并且在提交表单后操作具有ID

时间:2010-05-14 17:21:07

标签: ruby-on-rails routing routes formtastic

我有一个模型用户has_one user_profile和User_Profile belongs_to用户

用户控制器中的

我有:

  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的操作。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

我刚刚解决了问题,最后了解了问题并找到了解决方案。

这次我使用getJason使用ajax调用。 因为这是一个get,而在我的路线中我有一个update_xxxxxx =&gt; :放, 路由被忽略,默认使用:controller /:action /:id。

我只需要把update_xxxx =&gt; :得到,问题解决了。

也许这会对某人有所帮助。