Hi,
Bryan's suggestions are very good. In your case, I would suggest
starting with a basic code to get a mental picture of the whole Rails app:
- Make the link point to "/files/1/parse". Edit the "show.dryml" page
for this.
- Add a route to config/routes.rb to match this link to the action
"parse" in the controller "FilesController"
- Add the action parse in the "FilesController" (using logger.info and
monitoring the log will help to know if you are on the right way).
- Inside the action: run your code and redirect the user to somewhere.
- Try not to put too much code inside the action. It's much better to
call model methods. But as a start, just make it work :). The "fat
models, thin controllers" philosophy will come later.
A couple of examples of show_pages in Hobo apps:
-
https://github.com/suyccom/member-manage/blob/master/app/views/members/show.dryml
-
https://github.com/suyccom/agility_bootstrap/blob/master/app/views/projects/show.dryml
To make all this happen, I would browse Rails official docs or even
better, grab a copy of the book "Agile Web Development with Rails" (4th
edition is for Rails 3) .
Regards,
Ignacio
El 21/11/12 14:50, Bryan Larsen escribió:
Obviously, there's more than one way to do this, but here's my
suggestion. Perhaps others will chime in with different suggestions
and you can pick and choose.
Assumptions: the model that contains the CSV is called UploadedCsv,
which is used to create a bunch of records named Contract.
"business logic" in general belongs in the model. So add a method to
UploadedCsv that parses your CSV. It should be responsible for
parsing the CSV and call out to a class method on Contract responsible
for creating new contracts, checking for dupes, et cetera.
I'd expose this logic to the UI by adding a lifecycle to UploadedCsv.
2 or three states: unprocessed, processed and maybe an error state.
The transition from unprocessed to processed would call the parsing
method. Lifecycle buttons are then almost automatically added by
Hobo if you have the permissions and visibility set correctly.
suggested reading: the lifecycle chapter in Hobo, and the ActiveRecord
query interface:
http://guides.rubyonrails.org/active_record_querying.html
Bryan
On Wed, Nov 21, 2012 at 7:57 AM, Drew Hamilton <[email protected]> wrote:
Hi all,
First off, a very quick introduction of where I'm coming from,
skill-level-wise: I'm a complete neophyte with both Rails and Hobo,
although I'm familiar with Ruby. I do understand web development, MVC
architecture, OOP, etc., and have used a variety of platforms and
frameworks.
My company needs a small internal database to keep track of contracts, and
I'm using that as an opportunity to learn Rails. I was attracted to Hobo
because it seems like it will eliminate a lot of the "busy work" involved in
making an application.
I did the Agility tutorial, and also followed along with my own application.
Indeed, I was amazed at how I needed to do little more than declare my model
to have a full application up and running. I also did some work at changing
some of the cards for my application, just to show that I can, although I
prefer not to do a whole lot of that until the application is more complete
than it is.
Where I'm stuck now is that after the tutorial, I have an app that allows
users to enter and view data, but I don't have a really good understanding
of how to make it do things programmatically.
In my specific case, the contract data in my application really only needs
to be *viewed*; the data itself should be uploaded once per month from a CSV
file and then cleaned up, have the uploader notified of problem rows, etc.
I used Paperclip and made a model that would take the raw CSV files, and I
also made a model to hold the actual data from the files.
Parsing the CSV isn't the problem; I'm sure there are many Ruby libraries
that can help. What I don't know is
- If I wanted to make a link in the "uploaded csv file" page that, when
clicked would run code, how do I make that link? And where does the code
itself go?
- How do I access the data (not the CSV file; I mean how do I make new
records; how do I search existing records, etc.) from that code?
I'm certainly not asking anyone to do my work for me; just hoping that
someone could give me a link that I can read, or a link to a hobo-based
project with public source code, etc. that would help point me in the right
direction.
Thanks!
- Drew
--
You received this message because you are subscribed to the Google Groups
"Hobo Users" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/hobousers/-/zvwqiZ7JjuMJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/hobousers?hl=en.
--
Ignacio Huerta Arteche
http://www.ihuerta.net
Teléfono: 0034 645 70 77 35
Email realizado con software libre
--
You received this message because you are subscribed to the Google Groups "Hobo
Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/hobousers?hl=en.