Search

Ideas that are…

543 ideas match your query.:

Search ideas

#327 applies here, too: no access to instance variables inside helper class methods.

#332 · Dennis Hackethal, 3 months ago · Criticism

Not as of #330, they couldn’t.

#331 · Dennis Hackethal, 3 months ago · CriticismCriticized1 criticim(s)

Hiccdown methods should live in their own, separate classes. How about they are called ‘displays’?

class ProductsDisplay
  def index vc, # …
    vc.some_helper_method
  end
end

Behind the scenes, the Hiccdown gem would need to make the instance variables available to the display class:

display = @display_module.new

view_context.instance_variables.each do |iv|
  display.instance_variable_set(
    iv,
    view_context.instance_variable_get(iv)
  )
end

Then:

class ProductsDisplay
  def index vc, # …
    vc.some_helper_method(@products)
  end
end
#330 · Dennis Hackethal, 3 months ago · revision of #313 · Criticized1 criticim(s)

That’s way too verbose.

#329 · Dennis Hackethal, 3 months ago · Criticism

They are: vc.instance_variable_get(:@foo)

#328 · Dennis Hackethal, 3 months ago · CriticismCriticized1 criticim(s)

Instance variables are not available inside the methods.

#327 · Dennis Hackethal, 3 months ago · Criticism

I’m trying this now. Having to prepend every invocation of a helper method with vc. is getting really old really fast.

#326 · Dennis Hackethal, 3 months ago · Criticism

Hiccdown methods should live in their own, separate modules. How about they are called ‘displays’?

module ProductsDisplay
  def self.index vc, # …
    vc.some_helper_method
  end
end

A benefit of this approach is that, when people start a new Rails app, they may end up putting whatever they’d otherwise put in a helper in a display, since displays have the benefit of having unambiguously resolvable method names.

#325 · Dennis Hackethal, 3 months ago · revision of #313 · Criticized2 criticim(s)

Superseded by #323. This comment was generated automatically.

#324 · Dennis Hackethal, 3 months ago · Criticism

Tested, it works. self does indeed point to the view_context in the helper. Verified by printing object_ids.

#323 · Dennis Hackethal, 3 months ago · revision of #322 · Criticism

Tested, it works.

#322 · Dennis Hackethal, 3 months ago · CriticismCriticized1 criticim(s)

Test this!

#321 · Dennis Hackethal, 3 months ago · CriticismCriticized1 criticim(s)

Maybe ‘Display’. ProductsDisplay

#320 · Dennis Hackethal, 3 months ago

I don’t like the term ‘renderer’ yet. It’s too loaded with meaning, what with Rails already having a render method in controllers and another render method in views…

#319 · Dennis Hackethal, 3 months ago · Criticism

Superseded by #317. This comment was generated automatically.

#318 · Dennis Hackethal, 3 months ago · Criticism

Then how would you call index from a helper method?

#317 · Dennis Hackethal, 3 months ago · revision of #314 · CriticismCriticized1 criticim(s)

Hiccdown methods should live in their own, separate modules. How about they are called ‘renderers’?

module ProductsRenderer
  def self.index vc, # …
    vc.some_helper_method
  end
end

A benefit of this approach is that, when people start a new Rails app, they may end up putting whatever they’d otherwise put in a helper in a renderer, since renderers have the benefit of having unambiguously resolvable method names.

#316 · Dennis Hackethal, 3 months ago · revision of #313 · Criticized1 criticim(s)

I don’t think that’s something people would do a lot, but they still easily could: ProductsRenderer.index(self)

#315 · Dennis Hackethal, 3 months ago · Criticism

Then how would you call this from a helper method?

#314 · Dennis Hackethal, 3 months ago · CriticismCriticized2 criticim(s)

Hiccdown methods should live in their own, separate modules. How about they are called ‘renderers’?

module ProductsRenderer
  def self.index vc, # …
    vc.some_helper_method
  end
end
#313 · Dennis Hackethal, 3 months ago

That would be mixing class methods an instance methods in Rails helper modules, which typically only contain instance methods. Not idiomatic Rails usage.

#312 · Dennis Hackethal, 3 months ago · Criticism

Superseded by #310. This comment was generated automatically.

#311 · Dennis Hackethal, 3 months ago · Criticism

If so, there might be a way to bind them to the view_context. Or I could definitely pass the view_context explicitly as the first parameter:

So instead of

@helper_module.instance_method(@action_name).bind_call(view_context)

I would do

@helper_module.send(@action_name, view_context)

And the parameter list of each Hiccdown method would start accordingly:

module ProductsHelper
  def self.index vc #, …
    vc.some_helper_method
  end

  def some_helper_method
    # …
  end
end
#310 · Dennis Hackethal, 3 months ago · revision of #307 · Criticism

Superseded by #308. This comment was generated automatically.

#309 · Dennis Hackethal, 3 months ago · Criticism

If so, there might be a way to bind them to the view_context. Or I could definitely pass the view_context explicitly as the first parameter:

So instead of

@helper_module.instance_method(@action_name).bind_call(view_context)

I would do

@helper_module.send(@action_name, view_context)

And the parameter list of each Hiccdown method would start accordingly:

module ProductsHelper
  def self.index vc #, …
    # …
  end
end
#308 · Dennis Hackethal, 3 months ago · revision of #307 · CriticismCriticized1 criticim(s)