Proper idom for link_to_if

What I wish to do is to have a construct like this in a view:

<%= link_to_if , “New Model View”, new_model_path -%>

has to return true if new_model_path is defined and false
otherwise. What is the proper idiom to do this in rails 2?

James B. wrote:

defined? new_model_path

I do not know why I can spend so much time on something only to find the
answer after I have asked for help.

Hi –

On Mon, 24 Mar 2008, James B. wrote:

What I wish to do is to have a construct like this in a view:

<%= link_to_if , “New Model View”, new_model_path -%>

has to return true if new_model_path is defined and false
otherwise. What is the proper idiom to do this in rails 2?

I guess you could do:

<% if respond_to?(:new_model_path) %>
<%= link_to … %>
<% end %>

but that seems very brittle to me. By the time you’re writing a view,
you should know what helper methods and named routes exist, and which
ones don’t.

David


Upcoming Rails training from David A. Black and Ruby Power and Light:
ADVANCING WITH RAILS April 14-17 New York City
INTRO TO RAILS June 9-12 Berlin
ADVANCING WITH RAILS June 16-19 Berlin
CORE RAILS June 24-27 London (Skills Matter)
See http://www.rubypal.com for more info!

James B. wrote:

But I could not get it to work with link_to_if.

This does not work (syntax error)

<%= link_to_if((defined?(new_vendor_path)), ‘New Vendor’,
new_vendor_path) -%>

but this does

<%= link_to(‘New Vendor’, new_vendor_path) if (defined?
(new_vendor_path)) -%>

Why?

David A. Black wrote:

Hi –

but that seems very brittle to me. By the time you’re writing a view,
you should know what helper methods and named routes exist, and which
ones don’t.

Yes and I do/will. But for the moment I am writing one side of a
bilaterally symmetrical application tree. I therefor wish to make this
functionality dynamic since I am frequently adding and deleting that
specific branch. It is not intended for production code.

On Mon, Mar 24, 2008 at 1:09 PM, James B.
[email protected] wrote:

James B. wrote:

But I could not get it to work with link_to_if.

This does not work (syntax error)

<%= link_to_if((defined?(new_vendor_path)), ‘New Vendor’,
new_vendor_path) -%>

I wonder if you would have to write that as:

<%= link_to_if(defined?(:new_vendor_path), …

(notice the “:”)?

newbies $.02

–wpd

Hi –

On Mon, 24 Mar 2008, James B. wrote:

Yes and I do/will. But for the moment I am writing one side of a
bilaterally symmetrical application tree. I therefor wish to make this
functionality dynamic since I am frequently adding and deleting that
specific branch. It is not intended for production code.

I also converted your example to a plain if (instead of link_to_if) –
just an artifact of having been playing around with it, but I imagine
you could translate it back :slight_smile: But my main point was about knowing
the helpers, etc., and I understand your point about just trying it
out.

David


Upcoming Rails training from David A. Black and Ruby Power and Light:
ADVANCING WITH RAILS April 14-17 New York City
INTRO TO RAILS June 9-12 Berlin
ADVANCING WITH RAILS June 16-19 Berlin
CORE RAILS June 24-27 London (Skills Matter)
See http://www.rubypal.com for more info!

Patrick D. wrote:

I wonder if you would have to write that as:

<%= link_to_if(defined?(:new_vendor_path), …

(notice the “:”)?

I tried your suggestion and it does not change anything. I seemingly
cannot get link_to_if to work in this instance.

On Mar 24, 2008, at 1:46 PM, James B. wrote:

Patrick D. wrote:

I wonder if you would have to write that as:

<%= link_to_if(defined?(:new_vendor_path), …

(notice the “:”)?

I tried your suggestion and it does not change anything. I seemingly
cannot get link_to_if to work in this instance.

In order to call the link_to_if method, its arguments must first be
evaluated.
With David’s change to
link_to(…) if defined? new_vendor_path
the arguments to the link_to() are only evaluated after the “defined?
new_vendor_path” has returned true.

-Rob

Rob B. http://agileconsultingllc.com
[email protected]