2010-05-27 25 views
0

我想通過與兩個對象關聯到從路徑創建一個路徑的屬性。在這種情況下,_url是skip_contact_letter_url。 contact_letter和letter是通過渲染部分傳遞的。下面的剪輯駐留在部分。如何基於在軌路由通過_url傳遞對象?

<%= link_to_remote "Skip Letter Remote #{contact_letter}", 
     :url => skip_contact_letter_url(contact_letter, letter), 
     :update => "update-area-#{contact_letter.id}-#{letter.id}" %> 
<span id='update-area-<%="#{contact_letter.id}-#{letter.id}"%>'> </span> 

路線我創造了這個樣子的:

map.resources :contact_letters, :member => {:skip => :post} 

而且控制器看起來是這樣的:

def skip 

    @contact_letter = ContactLetter.new(params[:all]) 

    @contact_letter.status = "skipped" 
    @contact_letter.date_sent = Date.today 
    #@contact_letter.date_created = Date.today 

    if @contact_letter.save 
     render :text => 'This letter was skipped!' 

    end end 

當我看到控制檯,沒有一個參數從contact_letter或信件通過。

由於路線的結果,這就是它看起來像從耙路線:

skip_contact_email POST /contact_emails/:id/skip(.:format)     {:action=>"skip", :controller=>"contact_emails"} 

添加註釋:

需要

我想到的路線進行更改,以便我可以傳給:CONTACT_ID和:letter_id,但不明確:

map.resources 'contacts/:contact_id/letters/:letter_id/skip', :controller => 'contact_letters', :action => 'skip' 

回答

0

首先,可能你沒有params [:all]。 在你的路線,你可以定義是這樣的:

<%= link_to_remote "Skip Letter Remote #{contact_letter}", 
    :url => skip_contact_letter_url(
       :contact_letter=>contact_letter.attributes, 
       :letter=>letter.attributes) 

注意contact_letter.attributes產生的散列與對象的屬性。 在你的控制器,你會有:

@contact_letter = ContactLetter.new(params[:contact_letter]) 

希望這會有所幫助。

+0

啊,我想這就是問題所在,讓我試試,謝謝! – Angela 2010-05-28 14:29:19

+0

嗯......這樣:contact_letter實際上通過在收集@contacts ....所以散列會接觸的屬性,而不是contact_letter。我如何提取那些從散> – Angela 2010-05-28 14:57:37

+0

我得到一個錯誤:skip_contact_letter_url無法從生成{:contact_letter => {」 – Angela 2010-05-28 15:10:15