Search

Ideas that are…

Search Ideas


37 ideas match your query.:

Hiccdown should have support for ids and class names in the tag symbol. Like Hiccup.

ruby
[:'div#my-id.my-class.another-class']
# => <div id="my-id" class="my-class another-class"></div>

It should also allow mixing:

ruby
[:'div#my-id.my-class.another-class', {id: 'override', class: 'additive'}]
# => <div id="override" class="my-class another-class additive"></div>

In other words, the id from the hash would override the id from the symbol, and the class from the hash would be added to the classes from the symbol.

#1984·Dennis HackethalOP, 4 months ago·Criticism

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

ruby
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:

ruby
display = @display_module.new
view_context.instance_variables.each do |iv|
display.instance_variable_set(
iv,
view_context.instance_variable_get(iv)
)
end

Then:

ruby
class ProductsDisplay
def index vc, # …
vc.some_helper_method(@products)
end
end
#1982·Dennis HackethalOP revised 4 months ago·Original #313·CriticismCriticized1Archived

Hiccdown methods should live in Rails helpers as class methods. That way, the problem described in #302 is solved – methods can be referenced unambiguously:

ruby
ProductsHelper.index
StoresHelper.index
#1980·Dennis HackethalOP revised 4 months ago·Original #303·CriticismCriticized2

Hiccdown methods should live in Rails helpers as instance methods.

#1978·Dennis HackethalOP revised 4 months ago·Original #300·CriticismCriticized1

Could the errors around layouts be related to this?

#859·Dennis HackethalOP, over 1 year ago·Criticism

It doesn’t really matter. This would be like calling a controller action from a helper method. Not something people do.

#341·Dennis HackethalOP, over 1 year ago·Criticism

I think the thing I’m really fighting here is Rails being object-oriented. Which I can’t do anything about.

Not sure the Rails team realizes how much OOP reduces the extensibility of Rails.

#335·Dennis HackethalOP revised over 1 year ago·Original #334

I think the thing I’m really fighting here is Rails being object-oriented. Which I can’t do anything about.

Not sure the Rails team realizes how much OOP reduces the extensibility of Rails.

#334·Dennis HackethalOP, over 1 year ago·CriticismCriticized1

Having explored three different ideas, I believe #302 – having regular helper methods to render Hiccdown structures – is the best.

The idea is not without its flaws, but having to qualify a method name by, say, calling it idea_form instead of form is still better than manually having to pass the view context around all the time and not being able to trivially access instance variables.

So I’ll stick with #302 for now, which is the status quo already.

#333·Dennis HackethalOP, over 1 year ago

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

#332·Dennis HackethalOP, over 1 year ago·Criticism

Not as of #330, they couldn’t.

#331·Dennis HackethalOP, over 1 year ago·CriticismCriticized1

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

ruby
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:

ruby
display = @display_module.new
view_context.instance_variables.each do |iv|
display.instance_variable_set(
iv,
view_context.instance_variable_get(iv)
)
end

Then:

ruby
class ProductsDisplay
def index vc, # …
vc.some_helper_method(@products)
end
end
#330·Dennis HackethalOP revised over 1 year ago·Original #313·Criticized2Archived

That’s way too verbose.

#329·Dennis HackethalOP, over 1 year ago·Criticism

They are: vc.instance_variable_get(:@foo)

#328·Dennis HackethalOP, over 1 year ago·CriticismCriticized1

Instance variables are not available inside the methods.

#327·Dennis HackethalOP, over 1 year 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 HackethalOP, over 1 year ago·Criticism

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

ruby
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 HackethalOP revised over 1 year ago·Original #313·Criticized2Archived

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

#323·Dennis HackethalOP revised over 1 year ago·Original #322·Criticism

Tested, it works.

#322·Dennis HackethalOP, over 1 year ago·CriticismCriticized1

Test this!

#321·Dennis HackethalOP, over 1 year ago·CriticismCriticized1

Maybe ‘Display’. ProductsDisplay

#320·Dennis HackethalOP, over 1 year 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 HackethalOP, over 1 year ago·Criticism

Then how would you call index from a helper method?

#317·Dennis HackethalOP revised over 1 year ago·Original #314·CriticismCriticized1

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

ruby
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 HackethalOP revised over 1 year ago·Original #313·Criticized1Archived

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

#315·Dennis HackethalOP, over 1 year ago·Criticism