ruby on rails - Pass params between forms in the same view RoR -


i have 2 forms in same view form_tag , form_for . first ( form_tag ) use make live search of node ( parent node ) . second ( form_for ) use create node ( child node ) . clearer , each node has variable ( parent_id ) pointing node ( parent node ) .

my problem when create child node (with form_for ) not know how assign value parent_id , because not know how pass value 1 form another

new.html.erb

<%= form_tag ({controller: "nodes", action: "search"}), :id => "users_search" %>   <%= text_field_tag :search, params[:search], :autocomplete => 'off' %>   <div id='users'>     <%= render 'users' %>   </div> <% end %>  <%=form_for @node |f| %>   <%= f.hidden_field :parent_id, :value => @nodo_padre %>   <%= f.hidden_field :user_id, :value => current_user.id  %>   <%= f.hidden_field :ocuped, :value => true %>   <%= f.text_field :custom_node_name %>   <%= f.check_box :terms_of_service,{}, true,false %>   <%= f.submit "pagar", class: "button postfix" %> <% end %> 

_users.html.erb

<% if not @parent.nil? %>   <% @parent.each |u| %>     <%= u.user.email %>     <%= hidden_field_tag @nodo_padre , u.id %> ...... think... <% end %> 

request

parameters:

{"utf8"=>"✓",  "authenticity_token"=>"nz7hu0sbrv49b2ay/rw0c6nak8dno4ra7ykm5val0q+0d9yfsa5/po3boouuxxx+k04mp5dzhnojzandtoyomw==",  "node"=>{"parent_id"=>"",  "user_id"=>"4",  "ocuped"=>"true",  "custom_node_name"=>"mi primera red",  "terms_of_service"=>"true"},  "commit"=>"pagar"} 

nodes_controller.rb

def new @node = node.new    end  def search @node = node.new   @parent = node.search(params[:search]).where(:ocuped => true)  if not @users.nil?   if @users.count == 1     @node_incomplete = @users.nodes.where(" sons < ? , ocuped = ?",2,true).first   else     @node_incomplete = @users.first.nodes.where(" sons < ? , ocuped = ?",2,true).first   end   @son_of_incompleted_node = @node_incomplete.children end  respond_to |format|   format.html   format.js { render } end end  def create @node = node.new(node_params) @node.parent_id = @parent.id respond_to |format|   if @node.save     format.html { redirect_to @node, notice: 'node created.' }     format.json { render :show, status: :created, location: @node }   else     format.html { render :new }     format.json { render json: @node.errors, status: :unprocessable_entity }   end end end 

it not matter how build forms (form_for, form_tag, simple_form_for...). result in <form> in rendered html template. forms "live" on client side (browser). if submit form, form elements (elements <input>, <textarea>, <select>) submited server.

it's not valid nest <form> tags, must not have <form> tag inside <form> tag. valid though have multiple <form> tags on single page.

when want share information between <form> elements, can use javascript "transfer" value 1 <form> another.

say want know parent node id when second form submitted:

  • register change listener on parent node id element in first form
  • on change, read value, write hidden field on second form

assuming use jquery: might find useful: https://api.jquery.com/change/

or can set parent node id hidden field when it's selected in live search.

in case: unless present in <form> won't submitted server. solution use hidden field.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -