Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot Render Ruby on Rails Partials #222

Open
vkoves opened this issue Oct 8, 2017 · 7 comments
Open

Cannot Render Ruby on Rails Partials #222

vkoves opened this issue Oct 8, 2017 · 7 comments

Comments

@vkoves
Copy link

vkoves commented Oct 8, 2017

I noticed in the README that you can use views inside of livingstyleguide, but had issues actually getting them to work.

My typical Ruby on Rails code that I am trying to emulate is

<%= render "shared/user_box_horizontal", user: User.all.first, free: true %>

I attempted to implement this in living style guide by doing:

@use views/shared/_user_box_horizontal.html.erb, user: User.all.first, free: true

But this no matter what directory or what view I try to point that to, I always get a "No such file or directory" error. This occurs even if I remove the variables at the end, since I'm pretty sure I have to refactor that syntax somewhat.

@vkoves vkoves changed the title Rendering Ruby on Rails Partials Cannot Render Ruby on Rails Partials Oct 8, 2017
@hagenburger
Copy link
Member

I had this running long time ago but I remember it was very tricky to set up and did not had access to everything you would expect to have in a view. I’m not actively working in a Rails project right now. So I’m happy to accept support for this issue.

@vkoves
Copy link
Author

vkoves commented Oct 10, 2017

You definitely seem to be correct on that point - the main issue seems to be that the style guide does not behave like a view and I cannot access most of the traditional tools I have available to me when making a Ruby on Rails view. To be frank, I simply worked around this by copying and pasting some output HTML as a sample, and then using a code snippet to show how it could be generated.

Is there potentially a way I could make the living style guide act as a proper view and gain access to things like current_user, <%= render and all of that? I'm not really sure where to even begin in trying to resolve this myself, as I'm not positive how livingstyleguide is working within Rails.

@hagenburger
Copy link
Member

Something that should also work (tested in Rails 3 as far as I remember):

  1. Create an app/controllers/lsg_controller.rb and add layout :none
  2. Create a view for each style guide page like app/views/components.html.lsg
  3. Add routes and actions for each page
  4. Add page caching (or even better a CDN in front), otherwise it’s a little slow

Give it a try, I did not have tested this myself recently. In general LSG is just another renderer like Haml.

@vkoves
Copy link
Author

vkoves commented Oct 12, 2017

Thanks for the suggestion! Unfortunately, I am using Rails 4 (and probably should upgrade to Rails 5), and this implementation does not seem to be working. Do you have any further documentation where I can look at implementing living style guide with Ruby on Rails, or is there a place in the source that might help me?

I am satisfied working with livingstyleguide as it is setup by default, but it would be much more powerful if I was able to interface with my Rails app in an ordinary way.

@ryangrush
Copy link

Great gem, but it would be great if this was more clear. Does anyone have a good way to incorporate Rails view components into LSG?

@hagenburger
Copy link
Member

@ryangrush and everybody: I’m open for suggestions. But I’m currently not working in Rails projects, so I won’t be the one working on it.

Also I’m currently working on a JavaScript version of LivingStyleGuide with broader documentation and API focus which might get a Rails integration later: http://github.com/hagenburger/pimd

@tomasmcm
Copy link

tomasmcm commented Feb 7, 2019

I also had this issue. This may not be a nice looking solution but I've managed to get partials displayed this way:

` ` `
<%= ApplicationController.render(
  partial: 'partials/components/input',
  locals: {
    custom_class: 'u-mb-double',
    input_variant: 'primary',
    input_name: 'First Name'
  }
) %>
@type erb
` ` `

The downside is that you have to write your render in a different way, but at least you can reuse the same partials.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants