I''ve made a scaffold project that has been edited so that when you create a new task, the show method will run though some ruby code that manipulates the data inputed. I want to make it so that when a user types in the url http://localhost:3000/some_controller/some_method/some_id_#, the ruby code won''t run again. I tried to fix this problem by telling the program to check if the id exsist then don''t run the ruby code and redirect the user, otherwise run the code. This didn''t work becuase the id does get created. The other solution I tried was to create an after_filter on the create method. The issue with this was that I couldn''t get the parameters from the form and manipulate it. I appreciate all the help I can get! Thanks, Anon_comp -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
anon_comp wrote:> I''ve made a scaffold project that has been edited so that when you > create a new task, the show method will run though some ruby code that > manipulates the data inputed. I want to make it so that when a user > types in the url > http://localhost:3000/some_controller/some_method/some_id_#,Can you explain in some more detail what you''re trying to do here?> the ruby code won''t run again. I tried to fix this problem by telling > the program to check if the id exsist then don''t run the ruby code and > redirect the user, otherwise run the code. This didn''t work becuase > the id does get created.Ok, well then there''s a bug in your code: don''t give up, try and fix it. Post your code up please.> > The other solution I tried was to create an after_filter on the create > method. The issue with this was that I couldn''t get the parameters > from the form and manipulate it.The code in an after filter can access params. Post your code up please. -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On Jun 30, 11:34 am, Max Williams <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Can you explain in some more detail what you''re trying to do here?Basically taking a file that the user browsed on their local computer (in this case my own computer since I''m testing it), manipulate the file directory name and run it through an outside program. The outside program creates a file that the user can view and I don''t want the ruby code activating again when the user reopens the show page.> Ok, well then there''s a bug in your code: don''t give up, try and fix it. > Post your code up please.This is the code for my first solution: In Controller ------------------- def show @order = Order.find(params[:id]) respond_to do |format| if @order then format.html {redirect_to ''/display'', :notice => "This task has already been created"} format.xml {render :xml => @order} else order = @order.logfile @log_file_cut = order.gsub(/[\w ! # $ % ^ & * + -]+\.log$/, ''*.log'') system(''C:\analog_6.0\analog.exe'', @log_file_cut) time = @order.created_at.strftime("%m%d%y_%H%M") watchforfile = "C:\\rails_project\\test2_copy\\public\\output\ \errors.txt" File.rename watchforfile, watchforfile+".#{time}.html" StatusReport.deliver_confirm(@order) #sends email when analog has completed format.html {redirect_to(:action => ''edit'')} # show.html.erb format.xml { render :xml => @order } end end rescue ActiveRecord::RecordNotFound logger.error("Attempt to access invalid task #{params[:id]}") flash[:notice] = "Invalid task" redirect_to "/display" end If you think about it, it''ll run the first set of code when I create a new object, not the actual ruby code to runs the outside program> > The other solution I tried was to create an after_filter on the create > > method. The issue with this was that I couldn''t get the parameters > > from the form and manipulate it. > > The code in an after filter can access params. Post your code up > please.My Second Solution In Controller ----------------------------------------------- after_filter :analog, :only => [:create] protected def analog order = params[:logfile] @log_file_cut = order.gsub(/[\w ! # $ % ^ & * + -]+\.log$/, ''*.log'') system(''C:\analog_6.0\analog.exe'', @log_file_cut) end end Thanks for the help :) -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
In your first example, is the show action ever called with an id for an order that doesn''t exist? Normally show would never be called with an invalid id. You say "If you think about it, it''ll run the first set of code when I create a new object, " but that doesn''t make sense to me. It won''t run either set because when you create an object you do it in the create action, not the show action. You need to explain more about what your process is here: i don''t mean post tons of code up but explain the sequence of events. In your second example, what''s the actual problem? I would look in your log to see what params[:logfile] is and then step through your code and see what it''s doing. -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.