Activity
That would be the Turbolinks progress bar. It gives you a sense of progress since the site is using Turbolinks and the browser doesn't actually show progress when pages are loading. You can find out some more about it here: https://github.com/rails/turbolinks#progress-bar
I'm just storing the wistia video ID in Rails and then embedding the videos.
The one thing I might think of is that you want to make sure you're using ERb asset_url helper appropriately to reference your images. If you're using those through CSS, you can use the "asset-url" helper in your CSS. The urls that are used in production have different URLs than in development so you have to use these helpers.
Posted in PDF Receipts Discussion
It's basically designed to be simpler rather than customizable, but you can take the PDF code that's in the gem and adapt it easily to add your own header and footer. Take a look at this code: https://github.com/excid3/r...
Thanks for the kind words Felipe! I really appreciate it. :) Really glad you like the gem and the architecture of it! I think the videos turned out to be really fantastic documentation that I never planned. :)
You can update your config when you setup Omniauth, you can specify your scope there. There are a lot of options for this, so just look up the available scopes for facebook to get the full list.
config.omniauth :facebook, "APP_ID", "APP_SECRET", scope: 'email', info_fields: 'email, name'
Posted in AASM state based on variable
This is more just a stylistic refactor, but you could also smash the event blocks inline to make them shorter. I also prefer case statements to ifs in situations like this. They're a little cleaner to read and using a ternary if statement for total_price also looks a little nicer, but this is all personal preference.
before_save :check_budget
event :over_budget { transitions from: [:new, :new_approval_needed], to: :new_approval_needed }
event :on_budget { transitions from: [:new, :new_approval_needed], to: :new }
def check_budget
case aasm_state
when 'new', 'new_approval_needed'
(total_price > 500) ? over_budget : on_budget
end
end
I didn't know about human_state
! That's super useful! It also makes sense that they have locale options for the names. That's something I would have not even though of providing but makes perfect sense that they provide that.
Hey Josh,
I would love to see this! I think what you're looking for is learning how to create generators that install things from a gem. I've been building the simple_calendar gem and made an episode on how you can create generators that should be helpful. https://gorails.com/episodes/vlog-day-13?autoplay=1
The next step after you get a basic generator done is to take a look at the refills gem and see how they build the "import" generator. I'm not entirely sure, but it should be a good basis on how to do that. I've yet to dive into any of the USDS styleguides, but this would be a really really cool gem to make and should help adoption of it a lot. You'd be famous if you get this built. :)
Whoo! Thank you thank you! :)
Posted in AASM state based on variable
This is basically what the code would look like. There's not a significant way to refactor this other than pulling it out into a concern, but that hides the problem more than it cleans it up.
When you need to print out aasm_state
, you can convert it from the string by doing this aasm_state.gsub("_", " ")
to remove the underscores. You can then upcase the string or whatever you need to make it display nicer.
Absolutely! You can just pass in an array with all the meetings and then inside the block you can print them out differently using a helper or something. Rough outline here, first section goes in the controller.
# Pass @meetings into the calendar
@meetings = work_meetings + personal_meetings
<% month_calendar meetings: @meetings do |day, meetings| %>
<% meetings.each do |meeting| %>
<% if meeting.meeting_type == "work_meeting" %>
Code for work meeting
<% else %>
Code for personal meeting
<% end %>
<% end %>
<% end %>
Yeah, we could cheat and embed the stream. ;) But wouldn't it be sweet to build streaming video ourselves too? :)
That would be killer! This would be better for the chat portion of twitch, but the actual video streaming wouldn't be done using websockets.
Posted in twilio as verification mobile systems
Hey Corrado,
This is very related to things I have been planning to do soon. I was thinking about doing one-time email login links and verifying phone numbers is great. What part of this tutorial didn't work for you? I'd love to do this one soon.
Posted in Exporting Records To CSV Discussion
For that, basically all you need to do is shovel onto the CSV at the end after you loop through the invoices.
You can just say csv << ["custom", "footer"]
Posted in Sending emails with Mandrill Discussion
Unfortunately you'll have to paste all the bootstrap styles inline into the email templates. Emails only work with limited CSS.
Ah yep! That would do it! I was going to say, sounds like you've got a reference to "default" in your yaml file.
Yep! The real reason is so that you don't store your production secrets in git for security.
You can definitely do all that, but yeah...it might be a lot for your first venture into JS land! :) You can absolutely add the form in the same page and use the example I linked to for updating the calendar after you create a new event though. Shouldn't be too hard.
Posted in How do I implement voting in Rails?
Hey Karl!
This is a great question. Voting requires you to determine who did it (the voter, probably a User), what they voted on (the votable object), and which way they voted (up or down) which you could call like "direction" or you could simply store "1" or "-1" as an integer for easy calculating. 1 would represent an upvote and -1 would represent the downvote. You can basically create a model called Vote that keeps track of that information. There's a little more complexity to it when you need to sum up a user's karma based upon all the votes on their submissions, but that can be done by adding up all the votes on their submissions.
If you don't want to build all this from scratch, there's a great little gem called acts_as_votable that you can use: https://github.com/ryanto/acts_as_votable
It will help you create all the models and methods for voting and you basically just have to create links to actions to up and downvote submissions.
I did an episode on "liking posts" that works very similar to this. It's how I did the hearts on the GoRails episodes. https://gorails.com/episodes/liking-posts
It covers most of what you want, but they're basically all considered upvotes. You'd have to add the 1 or -1 code in there to handle downvoting and keep track of which. Then your submission's karma is just the sum of all the upvotes and all the downvotes.
Hope that helps you get started!