我想将与两个对象关联的属性传递到从路径创建的路径中。在这种情况下,_url是skip_contact_letter_url。 contact_letter和letter通过渲染部分传递。下面的剪辑位于部分内容中。
<%= 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或letter的参数都没有通过。
由于这些路线,这就是rake路线的样子:
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 :(得分: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])
希望这有帮助。