ruby on rails - Multiple update forms for one model -
i want have multiple forms on 1 page. let's make example understand want:
i have page admins, let's it's admins#show
page. admin has change name on 1 form on page , on form age. know create 1 form want have multiple forms (because example). admins#show
page looks this:
<%= form_for @admin |a| %> <%= a.label :name %> <%= a.text_field :name %> <%= a.submit "submit name change" %> <% end %> <%= form_for @admin |e| %> <%= e.label :age %> <%= e.number_field :age %> <%= e.submit "submit age change" %> <% end %>
but in controller, don't know how works , here problem. think have this, how divide form inputs in update method?:
def edit @admin = admin.find(params[:id]) end def update @admin= admin.find(params[:id]) if @admin.update_attributes(:name=> admin_params1[:name]) redirect_to @admin else render 'edit' end if @admin.update_attributes(:age=> admin_params2[:age]) redirect_to @admin else render 'edit' end end private def admin_params1 params.require(:admin).permit(:name) end def admin_params2 params.require(:admin).permit(:age) end
well, think create other non-rest methods in controller , add named routes in config/routes add 2 different forms similar this;
<%= form_for :admin_name, url: admin_name_path, method: :post |a| %> <%= a.label :name %> <%= a.text_field :name %> <%= a.submit "submit name change" %> <% end %> <%= form_for :admin_age, url: admin_age_path, method: :post |e| %> <%= e.label :age %> <%= e.number_field :age %> <%= e.submit "submit age change" %> <% end %>
then this;
def update_age @admin = admin.find(params[:admin_age][:id]) if params[:admin_age] @admin.update_attributes(:age=> params[:admin_age][:age]) redirect_to @admin else render 'edit' end end def update_name @admin = admin.find(params[:admin_name][:id]) if params[:admin_name] @admin.update_attributes(:name=> params[:admin_name][:name]) redirect_to @admin else render 'edit' end end
** not tested bugs
Comments
Post a Comment