2015-01-05 1 views
2

네임 스페이스가 있거나없는 리소스에 액세스 할 수 있습니다.네임 스페이스에 중첩 된 리소스가있는 레일에서 동일한 양식과 form_for 사용

# routes.rb 
resources :foo 
namespace :admin do 
    resources :foo 
end 

나는 두 경우 모두 같은 _form 부분을 사용하기를 원하지만 form_for 컨트롤러에 따라 다른 인수가 필요합니다.

컨트롤러에 form_for 인수를 설정해야합니까?

# foo_controller.rb 
def set_foo 
    @form_for_arg = @foo 
end 

# admin/foo_controller.rb 
def set_foo 
    @form_for_arg = [:admin, @foo] 
end 

답변

2

부분의 내부 형태의 일반적인 기능을 넣어, 그리고 form_for 개인에 포장 :

<%= form_for [:admin, foo] do |f| %> 
    <%= render "foos/form", f: f %> 
<% end %> 

그리고 :

<%= form_for [foo] do |f| %> 
    <%= render "foos/form", f: f %> 
<% end %> 
+0

는'그 부분에서 사용할 수 f' 것 ? 'render 'foos/form ", f : f'을 사용할 필요가 없습니까? –

+0

실수입니다. 내 원래의 대답은 당신이 필요로하는 지역 변수를 전달하지 못했습니다 :'f : f'. 'render partial : "foos/form", locals : {f : f}'할 수도 있지만, 더 짧은 버전을 선호합니다. –

관련 문제