ruby on rails - Calling a specific respond_to block method -


i trying format link_to tag in order generate pdf file (wicked_pdf gem) following respond_to block:

respond_to |format|       format.html       format.pdf         render pdf: "file_name"        end     end 

i have created blocks javascript method. easy js rendered : add remote: true form.

in case of other mime types or respond_to block methods, have no clue how write link_to tag let controller know want specific method against another...

one of ways respond_to block determines format render looking @ extension of url. instance, if have in routes:

rails.application.routes.draw   'home/index', as: 'home' end 

and in controller:

class homecontroller < applicationcontroller   def index     respond_to |format|       format.html { render inline: 'html' }       format.pdf { render inline: 'pdf' }     end   end end 

i can format.pdf using .pdf extension:

$ curl http://localhost:3000/home/index.pdf # pdf $ curl http://localhost:3000/home/index.html # html 

when creating link_to, can tell extension use passing url_for (or whichever named route helper you're using):

<%= link_to 'view pdf', url_for(controller: 'home', action: 'index', format: 'pdf') %> # => <a href="/home/index.pdf">view pdf</a> <%= link_to 'view pdf', home_path(format: 'pdf') %> # => <a href="/home/index.pdf">view pdf</a> 

the way believe remote: true works setting accept header. rails uses figure out respond_to item call:

$ curl -h 'accept: application/pdf' http://localhost:3000/home/index # pdf 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -