2011-05-24 55 views
3

我有以下的奇異路徑:Rails的附加ID奇異路徑渲染錯誤後,編輯時

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添加到編輯記錄的ID中。例如, 當我第一次編輯記錄,網址是:

http://0.0.0.0:3000/seller/profile/edit 

但如果窗體驗證錯誤提交,窗體本身在

http://0.0.0.0:3000/seller/profile.2 

重新顯示其中2爲ID正在編輯的記錄。

的格式如下:

<%= simple_form_for @seller_profile do |f| %> 
    <%= f.input :name %> 
    <%= f.input :description %> 
    <%= f.submit %> 
<% end %> 

一切,說,偉大的工程,但我會完全屏蔽的ID在URL中。我該怎麼辦?

+0

我想這與您在編輯視圖中用於表單的URL有關。你能否提供這部分代碼? ('form_for' ...部分) – Kris 2011-05-24 13:25:36

+0

添加了上面的表單代碼 – Topo 2011-05-24 21:33:51

+0

任何人都知道嗎? – Syl 2012-10-18 17:03:38

回答

0

我還沒有真正與simple_form_for工作太多。但它看起來像是在猜測你的網址,就好像它們不是單一資源一樣。您可以提供一個自定義的:

<%= simple_form_for @seller_profile, :url => seller_profile_path do |f| %> 
    <%= f.input :name %> 
    <%= f.input :description %> 
    <%= f.submit %> 
<% end %>