Rails 4: form_for with nested resource and without -
in app, when regular user logs in, dropped in on dashboard displays service requests company belong_to.
when admin logs in, dropped onto dashboard displays of company logos can login , file service requests.
the views between regular user , admin user virtually exact same, outside of 1 or 2 entities on form (which controlled via cancan). trying able use same form if admin creates sr or regular user creates sr.
routes.rb:
resources :service_requests resources :notes end namespace :admin '', to: 'dashboard#index', as: '/' resources :companies resources :service_requests, only: [:index, :new] end end if admin logs in , clicks on company logo , clicks create new sr, route /admin/companies/1/service_requests/new. if regular user logs in is, /service_requests/new. confused on how reuse same form both admin , non-admin side. because setting company_id on sr in create resource in servicerequestscontroller
i following use same form on admin , not admin using cancan
#models/ability.rb class ability include cancan::ability def initialize(user) if user.is_admin? #replace returns true if logged-in user admin can :generate_this_form_fields, user # ^ can -> points method in controller, can # create 1 if you're not validating method, use anywhere end end end while on view file form is, like
#views/form.html.erb <%= form_tag ... %> <% if can? :generate_this_form_fields, user %> fields displayed if admin account <% else %> fields displayed if not admin <% end %> <% end %> actually in view, use
<% if current_user.is_admin? %> and not
<% if can? :generate_this_form_fields, user %> but i've made example in such way might fit you're trying solve. hope helps. cheers!
Comments
Post a Comment