Processing two unassociated Rails models' forms in one controller action -


i'm creating rails app take in input 2 models , respective forms, , log website mechanize , hundreds of tasks there.

the first form consists of user's login information (the username , password, using model user), , second 1 long list of term names , respective definitions (using model term , uploaded form excel doc).

i have no need associate these 2 models (unlike in similar questions, seem deal nested models). once mechanize task completes, destroy both models' objects database.

the 2 pieces of app (logging in website; , uploading terms , using them interact website) both work in separate scripts.

my question is: how can take in both models' information on 1 webpage , coordinate controller(s) accordingly? in situation, can create both objects in 1 controller? (if not, that's fine, long there's alternative; i'm game whatever work.)

i'm posting of code below. i'm happy answer questions may have. please keep in mind pretty new @ rails, not elegant code:

the user model:

class user < activerecord::base     attr_accessor :username, :password end 

and term model:

class term < activerecord::base     attr_accessible :name, :definition end 

in terms controller (the forms located in index action , script run in show action):

def create  @term = term.new(params[:term])  @user = user.new(params[:user])    if (@term.save && @user.save)     flash[:notice] = "your terms have been sent processing."     redirect_to terms_path   else     render :action => 'index'   end end        def show    @term = term.all    agent = mechanize.new     page = agent.get('www.myurl.com')    #log website    @user.username = myform.field_with(:id => "userfield").value    @user.password = myform.field_with(:id => "passfield").value    #and enter term information website's forms    rest of mechanize code goes here...  end 

and in views/terms/index.html.erb:

#the login form: <%= render 'loginform' %>   #the term file uploader: <%= form_tag import_terms_path, multipart: true %>  <%= file_field_tag :file %> <%= submit_tag "import" %> <% end %>  <br> <table id="terms">   <tr>     <th>name</th>     <th>definition</th>   </tr>  #displays uploaded terms on index page <% @terms.each |term| %>    <tr>     <td><%= term.name %></td>     <td><%= term.definition %></td>   </tr> <% end %> </table>  <p><%= link_to 'update website these terms', terms_update_terms_path %></p> 

and in views/terms/_loginform.erb:

 <%= form_for(@user) |f| %>  <div class="field">   <%= f.label_tag(:username, 'username') %><br />   <%= f.text_field_tag(:user, :username) %> </div> <div class="field">  <%= f.label_tag(:password, 'password') %><br />  <%= f.password_field_tag(:user, :password) %> </div> <% end %> 

and in views/terms/_termform.html.erb

<%= form_for(@term) |f| %>   <div class="field">    <%= f.label :name %><br />    <%= f.text_field :name %>   </div>   <div class="field">    <%= f.label :definition %><br />    <%= f.text_area :definition %>   </div>   <div class="actions">    <%= f.submit %>   </div> <% end %> 

if need save data , don't want associate models, save term separately:

<%= form_for @user |f| %>     <div class="field">       <%= f.label :username, 'username' %>       <%= f.text_field :username %>     </div>     <div class="field">       <%= f.label :password %>       <%= f.password_field :password %>     </div>     <div class="field">       <%= label_tag :name %>       <%= text_field_tag :name %>     </div>     <div class="field">       <%= label_tag :definition %>       <%= text_field_tag :definition %>     </div>     <div class="actions">       <%= f.submit %>     </div> <% end %> 

then in controller:

@term = term.new  @term.attributes = { :name => params[:name], :definition => params[:definition] }  @term.save 

if adding multiple term fields form, consider cocoon, , add each loop saving terms in controller.


Comments

Popular posts from this blog

ios - UICollectionView Self Sizing Cells with Auto Layout -

node.js - ldapjs - write after end error -

DOM Manipulation in Wordpress (and elsewhere) using php -