On 24 April 2010 22:53, RichardOnRails
<richarddummymailbox58...@uscomputergurus.com> wrote:
> Hi Colin,
>
> I had to work on adding authenticated users to my app,  so I had to
> back-burner the conditional-link issue.  I nevertheless would like to
> keep trying to learn how to do this.  Maybe CSS is the way to make the
> link switch between visible or not depending on context.  (Just my
> inspiration at the moment.)
>
> Also,  you mentioned that I needed have my switch initialized to
> false,  because nil will result in the same thing,  so I just
> commented it out in VendorController.  Seems to clear up one problem.
>
>> Your first attempt just above is already a class variable, as it
>> starts with @ so I don't follow you here.

Yes you are right of course, forgot to engage brain.  There is no need
for a class variable, an instance variable is what you want.

Colin

>
> I think @xxx defines an instance variables while @@xxx defines a class
> variable in Ruby.  That's what my Ruby books tell me, as does
> http://www.rubyist.net/~slagell/ruby/instancevars.html.
>
> It's nice that we got a couple of other respondents.  Maybe we'll get
> this resolved shortly.
>
> Best wishes,
> Richard
>
>
> On Apr 20, 1:11 pm, Colin Law <clan...@googlemail.com> wrote:
>> On 20 April 2010 16:03, RichardOnRails
>>
>>
>>
>> <richarddummymailbox58...@uscomputergurus.com> wrote:
>> > Hi Colin,
>>
>> >>> The following in app\views\vendors\show.html.erb works perfectly
>> >>> <%= link_to 'New Expense', '/expenses/new' %>
>>
>> >>> I have the following in app\controllers\vendors_controller.rb
>> >>> class VendorsController < ApplicationController
>> >>>     @show_new_expense_page = true
>> >>> [snip[
>>
>> >>> I now have  in app\views\vendors\show.html.erb
>> >>> <%= link_to 'New Expense', '/expenses/new' if @show_new_expense_page %>
>> >>> The foregoing link fails to be displayed
>>
>> >> I guess in this case that @showExpenseNew is not actually true as you 
>> >> think it is.
>> > You are so right!!  It is nil
>>
>> >> look athttp://guides.rubyonrails.org/
>> > Excellent guidance; it's excellent
>>
>> >> My favorite is to use ruby-debug
>> > I did that. It took me days to get working. I won't bore you with my
>> > travails.  But knew I needed to be able to debug but I didn't want to
>> > detour from getting version 1 of my app completed.  But your
>> > suggestion persuaded me otherwise.
>>
>> > My goal is to have a variable that is persistent and which:
>> > 1. Is defined somewhere and initialized to false
>>
>> You don't need to define it and set it to false, the code
>> if variable
>> is ok to use if variable is not defined - that is the same as false.
>> So you only need to set it to true where you want it true.
>>
>> > 2. Is set to true in app\views\expenses\new.html.erb when the <%=
>> > link_to 'New Vendor' ... is clicked
>>
>> Sounds good
>>
>> > 3. Is referenced in app\views\vendors\show.html.erb as a condition for
>> > whether to display some link
>>
>> Also sounds good
>>
>>
>>
>> > My current guess is to use a session variable,  which I've got a lot
>> > of hope for.  If that doesn't work,  I'll start a new thread.
>>
>> There should not be any need for a session variable, just set it in
>> the controller and test it in the view.
>>
>>
>>
>> > Best wishes,
>> > Richard
>>
>> > BTW, some of my failures are:
>> > My first attempt to see whether a shared value would work with
>> > @show_new_expense_page = true in app\controllers
>> > \vendors_controller.rb
>> > failed in app\views\vendors\show.html.erb
>> > because @show_new_expense_page was nil,
>>
>> Why is it nil if you are setting in in the controller?  Are you sure
>> it is executing that line in the controller.  Break there with
>> ruby-debug and check.
>>
>> > which ruby_debug demonstated for me, thanks to you.
>>
>> > My second attempt changed to a class variable @show_new_expense_page
>> > in both places, which resulted in a syntax error.
>>
>> Your first attempt just above is already a class variable, as it
>> starts with @ so I don't follow you here.
>>
>>
>>
>> > My third attemp was to initialize @show_new_expense_page in
>> > app\controllers\application_controller.rb
>>
>> No need for it in application_controller, only things that all
>> controllers need go here.
>>
>> Colin
>>
>> > which led to NameError in Vendors#show
>> > uninitialized class variable @@show_new_expense_page in
>> > ActionView::Base::CompiledTemplates
>>
>> --
>> 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-t...@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> rubyonrails-talk+unsubscr...@googlegroups.com.
>> For more options, visit this group 
>> athttp://groups.google.com/group/rubyonrails-talk?hl=en.
>
> --
> 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-t...@googlegroups.com.
> To unsubscribe from this group, send email to 
> rubyonrails-talk+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>

-- 
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-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to