run simple method from Helper on button click

530 views
Skip to first unread message

leo nike

unread,
Oct 27, 2013, 12:27:29 PM10/27/13
to rubyonra...@googlegroups.com
Greetings,
I'm new to rails and currently having couple problems about how to add
javascript functionality into rails.

I have a simple method in the helper and i want to run this code on
button click.

------------------------------------------------------------------
module PagesHelper
def show_message
"simple output"
end
end

------------------------------------------------------------------

this doesnt work
<%= button_to_function "Print", "show_message()" %>

this doesnt work too
<input onclick=" show_message() " type="button" value="PRINT" />

Can someone please show to properly solve this problem? I would really
apreciate it! thank you!

--
Posted via http://www.ruby-forum.com/.

ZeroModulus

unread,
Oct 27, 2013, 8:23:01 PM10/27/13
to rubyonra...@googlegroups.com
The `button_to_function` method's second argument should be JavaScript, not Ruby.

Kashif Umair Liaqat

unread,
Oct 28, 2013, 1:44:33 AM10/28/13
to rubyonra...@googlegroups.com
You cannot call Ruby code directly from client side. You have to send an AJAX request to some controller for this purpose.

leo nike

unread,
Oct 28, 2013, 10:52:06 AM10/28/13
to rubyonra...@googlegroups.com
Kashif Umair Liaqat wrote in post #1125837:
> You cannot call Ruby code directly from client side. You have to send an
> AJAX request to some controller for this purpose.

How would I do that? I have no knowledge of AJAX

Kashif Umair Liaqat

unread,
Oct 29, 2013, 2:28:43 AM10/29/13
to rubyonra...@googlegroups.com

Suppose you have a controller HomeController. It should look like below.

home_controller.rb

class HomeController < ApplicationController
  # GET /show_message
  def show_message
    format.js { render js: "alert('simple output');" }
  end
end

and in your routs.rb file add this line

get '/show_message', 'home#show_message', as: :show_message

and in your view add this line

<%= link_to "Print", show_message_path, remote: true %>

After this when you click on Print link, and AJAX request will be sent to HomeController'sshow_message action and it will display a javascript alert.

For better understanding of AJAX requests in Rails, follow this tutorial - http://www.tutorialspoint.com/ruby-on-rails/rails-and-ajax.htm :)

leo nike

unread,
Oct 30, 2013, 4:06:18 AM10/30/13
to rubyonra...@googlegroups.com
Thanks a lot!
Reply all
Reply to author
Forward
0 new messages