Forum: Ruby on Rails How to pass current value of form field in link_to?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Joe P. (Guest)
on 2009-01-27 18:48
Greetings to you,

I'm trying to write a "preview" link, and need to pass along the current
value of a text_field to this link.

I figure there is some simple Javascript way to do this, but so far
haven't figured it out.

Does anyone know how to get and pass the current value of a text_field
to link_to?
Joe P. (Guest)
on 2009-01-27 19:54
FWIW, I'm opening "preview" in another window.

For right now, I plan on passing the current value of the text_field by
setting params[:body] equal to it, but that doesn't seem to be the best
idea.  Is there a better way to pass the current value to the "preview"
action?
Greg (Guest)
on 2009-01-27 20:09
(Received via mailing list)
Where is the value in the text field coming from?  If it's coming from
your app (e.g. from the database or from a user passing parameters),
then you can do this on the Rails side of things, and it seems most
likely that you want to set an instance variable in the controller
(e.g. @text_field_value = [value]), which you can then use in both
your link_to and text_field.  If you want the text field to
dynamically update as the value of the text field is changed, then you
should use Javascript, such as something along these lines:

<input type="text" onkeyup="$('link').innerHTML = this.value" />
<a href="preview..." id="link"> Default text </a>

Best of luck,

Greg

On Jan 27, 12:54 pm, Joe P. <removed_email_address@domain.invalid>
Joe P. (Guest)
on 2009-01-27 21:06
Greg wrote:
> Where is the value in the text field coming from?
It's coming from whatever the user is typing in, so not from the
database :(


> If you want the text field to
> dynamically update as the value of the text field is changed, then you
> should use Javascript, such as something along these lines:
>
> <input type="text" onkeyup="$('link').innerHTML = this.value" />
> <a href="preview..." id="link"> Default text </a>

Thanks, that's almost what I'm looking for.  I'm having trouble passing
the value of link to the "preview" action... instead, when I hit
"preview" now, it shows value of the text field below the text field.

I guess I just need to set the value of a ruby variable equal to
link.innerHTML somehow...
Joe P. (Guest)
on 2009-01-27 21:39
Man, maybe I am making this more complicated than it should be.

I just need to pass whatever is in the text_field to a "preview" action
when I click a "preview" link.  So I don't really need to dynamically
update anything, but when "preview" is clicked, I want to get what is in
the text_field and pass it to my "preview" action.

To make it clearer, when someone clicks "Preview Post", I want @body to
be set to whatever is in the text_field.
<%= link_to "Preview Post", {:action => :preview, :id => @topic.id,
:body => @body}, {:id => 'link', :target => "_blank"} %>

Any ideas?
John Y. (Guest)
on 2009-01-27 23:31
(Received via mailing list)
> <%= link_to "Preview Post", {:action => :preview, :id => @topic.id,
> :body => @body}, {:id => 'link', :target => "_blank"} %>

try this:

<%= link_to "Preview Post", {:action => :preview, :id => @topic.id},
{:onclick => "this.href +='?body='+encodeURIComponent($F
('id_of_the_form_element')); return true", :id => 'link', :target =>
"_blank"} %>
Joe P. (Guest)
on 2009-01-27 23:47
John Y. wrote:
>> <%= link_to "Preview Post", {:action => :preview, :id => @topic.id,
>> :body => @body}, {:id => 'link', :target => "_blank"} %>
>
> try this:
>
> <%= link_to "Preview Post", {:action => :preview, :id => @topic.id},
> {:onclick => "this.href +='?body='+encodeURIComponent($F
> ('id_of_the_form_element')); return true", :id => 'link', :target =>
> "_blank"} %>

Muchas gracias, that is close to perfect.  The only problem is if I hit
"Preview Post" multiple times, it keeps adding onto body, but I can fix
that problem.

It's times like these that I realize I need to learn more javascript.
John Y. (Guest)
on 2009-01-28 03:27
(Received via mailing list)
Glad it worked for you.
:)
Jeba M. (Guest)
on 2009-03-06 13:51
John Y. wrote:
> try this:
>
> <%= link_to "Preview Post", {:action => :preview, :id => @topic.id},
> {:onclick => "this.href +='?body='+encodeURIComponent($F
> ('id_of_the_form_element')); return true", :id => 'link', :target =>
> "_blank"} %>


Hi John,
I have a similar requirement.
I need to pass the value of a text field with link_to
What I'm doing is:
<%= link_to "Go", {:controller=>'main',:action=>'searchcontc'},:onclick
=> "this.href +='?uname='+encodeURIComponent($F('name')); return true"
%>

But this doesn't work properly.
The first time I click the link it redirects to:
http://localhost:3000/main/searchcontc
And on the second click it goes to:
http://localhost:3000/main/searchcontc?uname=<valu...

Can please help me..and let me know how do I correct this...
Thank you.
Jeba M. (Guest)
on 2009-03-06 14:37
Joe P. wrote:
> Muchas gracias, that is close to perfect.  The only problem is if I hit
> "Preview Post" multiple times, it keeps adding onto body, but I can fix
> that problem.
>
> It's times like these that I realize I need to learn more javascript.

Hi Joe
Can u please share wid me how did u solve ur problem???
I'm too facing d same problem.
The parameter gets added every time I click the link..!!!!
How did u correct it???
Thank you...
This topic is locked and can not be replied to.