diff --git a/Gemfile b/Gemfile index ec2ba7b..83af3dc 100644 --- a/Gemfile +++ b/Gemfile @@ -9,10 +9,9 @@ group :development, :test do gem 'sqlite3' end -group :production do - gem 'pg' -end - +#group :production do +# gem 'pg' +#end gem 'devise' diff --git a/Gemfile.lock b/Gemfile.lock index fd905dc..eedba71 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -60,7 +60,7 @@ GEM mime-types (~> 1.16) treetop (~> 1.4.8) mime-types (1.18) - multi_json (1.3.1) + multi_json (1.3.2) orm_adapter (0.0.7) paperclip (3.0.2) activemodel (>= 3.0.0) @@ -68,7 +68,6 @@ GEM activesupport (>= 3.0.0) cocaine (>= 0.0.2) mime-types - pg (0.13.2) polyglot (0.3.3) rack (1.4.1) rack-cache (1.2) @@ -127,7 +126,6 @@ DEPENDENCIES jquery-rails json (= 1.6.5) paperclip - pg rails (= 3.2.2) sass-rails (~> 3.2.3) sqlite3 diff --git a/README.rdoc b/README.rdoc index 7c36f23..c0bfdd0 100644 --- a/README.rdoc +++ b/README.rdoc @@ -1,3 +1,5 @@ +Prueba + == Welcome to Rails Rails is a web-application framework that includes everything needed to create diff --git a/README.rdoc~ b/README.rdoc~ new file mode 100644 index 0000000..7c36f23 --- /dev/null +++ b/README.rdoc~ @@ -0,0 +1,261 @@ +== Welcome to Rails + +Rails is a web-application framework that includes everything needed to create +database-backed web applications according to the Model-View-Control pattern. + +This pattern splits the view (also called the presentation) into "dumb" +templates that are primarily responsible for inserting pre-built data in between +HTML tags. The model contains the "smart" domain objects (such as Account, +Product, Person, Post) that holds all the business logic and knows how to +persist themselves to a database. The controller handles the incoming requests +(such as Save New Account, Update Product, Show Post) by manipulating the model +and directing data to the view. + +In Rails, the model is handled by what's called an object-relational mapping +layer entitled Active Record. This layer allows you to present the data from +database rows as objects and embellish these data objects with business logic +methods. You can read more about Active Record in +link:files/vendor/rails/activerecord/README.html. + +The controller and view are handled by the Action Pack, which handles both +layers by its two parts: Action View and Action Controller. These two layers +are bundled in a single package due to their heavy interdependence. This is +unlike the relationship between the Active Record and Action Pack that is much +more separate. Each of these packages can be used independently outside of +Rails. You can read more about Action Pack in +link:files/vendor/rails/actionpack/README.html. + + +== Getting Started + +1. At the command prompt, create a new Rails application: + rails new myapp (where myapp is the application name) + +2. Change directory to myapp and start the web server: + cd myapp; rails server (run with --help for options) + +3. Go to http://localhost:3000/ and you'll see: + "Welcome aboard: You're riding Ruby on Rails!" + +4. Follow the guidelines to start developing your application. You can find +the following resources handy: + +* The Getting Started Guide: http://guides.rubyonrails.org/getting_started.html +* Ruby on Rails Tutorial Book: http://www.railstutorial.org/ + + +== Debugging Rails + +Sometimes your application goes wrong. Fortunately there are a lot of tools that +will help you debug it and get it back on the rails. + +First area to check is the application log files. Have "tail -f" commands +running on the server.log and development.log. Rails will automatically display +debugging and runtime information to these files. Debugging info will also be +shown in the browser on requests from 127.0.0.1. + +You can also log your own messages directly into the log file from your code +using the Ruby logger class from inside your controllers. Example: + + class WeblogController < ActionController::Base + def destroy + @weblog = Weblog.find(params[:id]) + @weblog.destroy + logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!") + end + end + +The result will be a message in your log file along the lines of: + + Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1! + +More information on how to use the logger is at http://www.ruby-doc.org/core/ + +Also, Ruby documentation can be found at http://www.ruby-lang.org/. There are +several books available online as well: + +* Programming Ruby: http://www.ruby-doc.org/docs/ProgrammingRuby/ (Pickaxe) +* Learn to Program: http://pine.fm/LearnToProgram/ (a beginners guide) + +These two books will bring you up to speed on the Ruby language and also on +programming in general. + + +== Debugger + +Debugger support is available through the debugger command when you start your +Mongrel or WEBrick server with --debugger. This means that you can break out of +execution at any point in the code, investigate and change the model, and then, +resume execution! You need to install ruby-debug to run the server in debugging +mode. With gems, use sudo gem install ruby-debug. Example: + + class WeblogController < ActionController::Base + def index + @posts = Post.all + debugger + end + end + +So the controller will accept the action, run the first line, then present you +with a IRB prompt in the server window. Here you can do things like: + + >> @posts.inspect + => "[#nil, "body"=>nil, "id"=>"1"}>, + #"Rails", "body"=>"Only ten..", "id"=>"2"}>]" + >> @posts.first.title = "hello from a debugger" + => "hello from a debugger" + +...and even better, you can examine how your runtime objects actually work: + + >> f = @posts.first + => #nil, "body"=>nil, "id"=>"1"}> + >> f. + Display all 152 possibilities? (y or n) + +Finally, when you're ready to resume execution, you can enter "cont". + + +== Console + +The console is a Ruby shell, which allows you to interact with your +application's domain model. Here you'll have all parts of the application +configured, just like it is when the application is running. You can inspect +domain models, change values, and save to the database. Starting the script +without arguments will launch it in the development environment. + +To start the console, run rails console from the application +directory. + +Options: + +* Passing the -s, --sandbox argument will rollback any modifications + made to the database. +* Passing an environment name as an argument will load the corresponding + environment. Example: rails console production. + +To reload your controllers and models after launching the console run +reload! + +More information about irb can be found at: +link:http://www.rubycentral.org/pickaxe/irb.html + + +== dbconsole + +You can go to the command line of your database directly through rails +dbconsole. You would be connected to the database with the credentials +defined in database.yml. Starting the script without arguments will connect you +to the development database. Passing an argument will connect you to a different +database, like rails dbconsole production. Currently works for MySQL, +PostgreSQL and SQLite 3. + +== Description of Contents + +The default directory structure of a generated Ruby on Rails application: + + |-- app + | |-- assets + | |-- images + | |-- javascripts + | `-- stylesheets + | |-- controllers + | |-- helpers + | |-- mailers + | |-- models + | `-- views + | `-- layouts + |-- config + | |-- environments + | |-- initializers + | `-- locales + |-- db + |-- doc + |-- lib + | `-- tasks + |-- log + |-- public + |-- script + |-- test + | |-- fixtures + | |-- functional + | |-- integration + | |-- performance + | `-- unit + |-- tmp + | |-- cache + | |-- pids + | |-- sessions + | `-- sockets + `-- vendor + |-- assets + `-- stylesheets + `-- plugins + +app + Holds all the code that's specific to this particular application. + +app/assets + Contains subdirectories for images, stylesheets, and JavaScript files. + +app/controllers + Holds controllers that should be named like weblogs_controller.rb for + automated URL mapping. All controllers should descend from + ApplicationController which itself descends from ActionController::Base. + +app/models + Holds models that should be named like post.rb. Models descend from + ActiveRecord::Base by default. + +app/views + Holds the template files for the view that should be named like + weblogs/index.html.erb for the WeblogsController#index action. All views use + eRuby syntax by default. + +app/views/layouts + Holds the template files for layouts to be used with views. This models the + common header/footer method of wrapping views. In your views, define a layout + using the layout :default and create a file named default.html.erb. + Inside default.html.erb, call <% yield %> to render the view using this + layout. + +app/helpers + Holds view helpers that should be named like weblogs_helper.rb. These are + generated for you automatically when using generators for controllers. + Helpers can be used to wrap functionality for your views into methods. + +config + Configuration files for the Rails environment, the routing map, the database, + and other dependencies. + +db + Contains the database schema in schema.rb. db/migrate contains all the + sequence of Migrations for your schema. + +doc + This directory is where your application documentation will be stored when + generated using rake doc:app + +lib + Application specific libraries. Basically, any kind of custom code that + doesn't belong under controllers, models, or helpers. This directory is in + the load path. + +public + The directory available for the web server. Also contains the dispatchers and the + default HTML files. This should be set as the DOCUMENT_ROOT of your web + server. + +script + Helper scripts for automation and generation. + +test + Unit and functional tests along with fixtures. When using the rails generate + command, template test files will be generated for you and placed in this + directory. + +vendor + External libraries that the application depends on. Also includes the plugins + subdirectory. If the app has frozen rails, those gems also go here, under + vendor/rails/. This directory is in the load path. diff --git a/app/assets/images/chimp1.jpeg b/app/assets/images/chimp1.jpeg new file mode 100644 index 0000000..893337c Binary files /dev/null and b/app/assets/images/chimp1.jpeg differ diff --git a/app/assets/images/chimp2.jpeg b/app/assets/images/chimp2.jpeg new file mode 100644 index 0000000..c955bc6 Binary files /dev/null and b/app/assets/images/chimp2.jpeg differ diff --git a/app/assets/javascripts/comments.js.coffee b/app/assets/javascripts/comments.js.coffee new file mode 100644 index 0000000..7615679 --- /dev/null +++ b/app/assets/javascripts/comments.js.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ diff --git a/app/assets/stylesheets/comments.css.scss b/app/assets/stylesheets/comments.css.scss new file mode 100644 index 0000000..e730912 --- /dev/null +++ b/app/assets/stylesheets/comments.css.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Comments controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/planet.css b/app/assets/stylesheets/planet.css index ead053a..145dccd 100644 --- a/app/assets/stylesheets/planet.css +++ b/app/assets/stylesheets/planet.css @@ -16,6 +16,12 @@ border-bottom: 3px dotted #77d; } +#planet h2 { + font: 150% sans-serif; + color: #226; + font-style: italic; +} + /* Styles for products/index */ #site_list table { @@ -87,6 +93,27 @@ float: right; color: #bfb; font-size: small; + padding: 6px 3px 3px 3px; +} + +#banner .search{ + float: right; + color: #000; + font-size: small; + margin: 4px 4px 4px 4px; + padding: 3px 3px 3px 3px; +} + +#banner .button{ + font-size:10px; + font-family:Verdana,Helvetica; + font-weight:bold; + color:white; + background:#446; + border:0px; + width:80px; + height:21px; + padding: 3px 0px 0px 3px; } #columns { @@ -167,3 +194,5 @@ text-indent: 70%; } + + diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb new file mode 100644 index 0000000..e751906 --- /dev/null +++ b/app/controllers/comments_controller.rb @@ -0,0 +1,56 @@ +class CommentsController < ApplicationController + + # authenticate_user! ejecuta acción solo si sesión existe + before_filter :authenticate_user! + + + def create + @site = Site.find(params[:site_id]) + @comment = @site.comments.create(params[:comment]) + @comment.user_id = current_user.id + + respond_to do |format| + if @comment.save + format.html { redirect_to @site, notice: 'Comentario creado' } + format.json { head :no_content } + else + format.html { render action: "edit" } + format.json { render json: @comment.errors, status: :unprocessable_entity } + end + end + end + def destroy + @site = Site.find(params[:site_id]) + @comment = @site.comments.find(params[:id]) + @comment.destroy + respond_to do |format| + format.html { redirect_to site_path(@site) } + format.json { head :no_content } + end + end + + # PUT /comments/1 + # PUT /comments/1.json + def update + @site = Site.find(params[:site_id]) + @comment = @site.comments.find(params[:id]) + + respond_to do |format| + if @comment.update_attributes(params[:comment]) + format.html { redirect_to @site, notice: 'Comentario actualizado' } + format.json { head :no_content } + else + format.html { render action: "edit" } + format.json { render json: @comment.errors, status: :unprocessable_entity } + end + end + end + + def edit + @site = Site.find(params[:site_id]) + @comment = @site.comments.find(params[:id]) + end + def index + @user = User.find(params[:user_id]) + end +end diff --git a/app/controllers/planet_controller.rb b/app/controllers/planet_controller.rb index a8636bd..6b673f5 100644 --- a/app/controllers/planet_controller.rb +++ b/app/controllers/planet_controller.rb @@ -29,5 +29,18 @@ def contact # Método que define una acción vacía del controlador def ejemplo end + + def author + end + + def search + if params[:q].length >= 3 + @search= params[:q] + @sites = Site.where("name like ? or description like ?", "%"+@search+"%", "%"+@search+"%") + @trips = Trip.where("name like ? or description like ?", "%"+@search+"%", "%"+@search+"%") + else + render action: "incorrectsearch" + end + end end diff --git a/app/controllers/sites_controller.rb b/app/controllers/sites_controller.rb index 57e0611..7c37a24 100644 --- a/app/controllers/sites_controller.rb +++ b/app/controllers/sites_controller.rb @@ -2,7 +2,6 @@ class SitesController < ApplicationController # authenticate_user! ejecuta acción solo si sesión existe before_filter :authenticate_user!, :except => [ :index, :show ] - after_filter :count_visita, :only => :show # GET /sites # GET /sites.json @@ -22,7 +21,7 @@ def index # GET /sites/1.json def show @site = Site.find(params[:id]) - + @site.increment!(:visitas) respond_to do |format| format.html # show.html.erb format.json { render json: @site } @@ -88,9 +87,4 @@ def destroy format.json { head :no_content } end end - - private - def count_visita - @site.increment!(:visitas) - end end diff --git a/app/controllers/types_controller.rb b/app/controllers/types_controller.rb index da826f4..8ebc277 100644 --- a/app/controllers/types_controller.rb +++ b/app/controllers/types_controller.rb @@ -10,6 +10,17 @@ def index end end + # GET /types/ordered_index + # GET /types/ordered_index.json + def ordered_index + @types = Type.find(:all, :order => :name) + + respond_to do |format| + format.html # index.html.erb + format.json { render json: @types } + end + end + # GET /types/1 # GET /types/1.json def show diff --git a/app/helpers/comments_helper.rb b/app/helpers/comments_helper.rb new file mode 100644 index 0000000..0ec9ca5 --- /dev/null +++ b/app/helpers/comments_helper.rb @@ -0,0 +1,2 @@ +module CommentsHelper +end diff --git a/app/models/comment.rb b/app/models/comment.rb new file mode 100644 index 0000000..240619b --- /dev/null +++ b/app/models/comment.rb @@ -0,0 +1,4 @@ +class Comment < ActiveRecord::Base + belongs_to :user + belongs_to :site +end diff --git a/app/models/site.rb b/app/models/site.rb index 2b2f99a..b615ce7 100644 --- a/app/models/site.rb +++ b/app/models/site.rb @@ -3,6 +3,7 @@ class Site < ActiveRecord::Base belongs_to :user has_many :visits has_many :trips, :through => :visits + has_many :comments, :dependent => :destroy has_attached_file :image diff --git a/app/models/user.rb b/app/models/user.rb index 35b8159..9890bc6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -2,6 +2,7 @@ class User < ActiveRecord::Base has_many :sites has_many :trips + has_many :comments, :dependent => :destroy # Include default devise modules. Others available are: # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable diff --git a/app/views/comments/_comment.html.erb b/app/views/comments/_comment.html.erb new file mode 100644 index 0000000..f1d6e15 --- /dev/null +++ b/app/views/comments/_comment.html.erb @@ -0,0 +1,14 @@ +

+ + <%= comment.user.name %>: + <%= comment.comment %> +

+ +

+ <% if (comment.user_id == current_user.id) %> + <%= link_to 'Edit', edit_site_comment_path(@site, comment) %> + <%= link_to 'Destroy', [comment.site, comment], + :confirm => 'Are you sure?', + :method => :delete %> + <% end %> +

\ No newline at end of file diff --git a/app/views/comments/_edit.html.erb b/app/views/comments/_edit.html.erb new file mode 100644 index 0000000..42931c4 --- /dev/null +++ b/app/views/comments/_edit.html.erb @@ -0,0 +1,8 @@ +<%= form_for([@site, @comment]) do |f| %> +
+ <%= f.text_area :comment %> +
+
+ <%= f.submit %> +
+<% end %> \ No newline at end of file diff --git a/app/views/comments/_form.html.erb b/app/views/comments/_form.html.erb new file mode 100644 index 0000000..45e3148 --- /dev/null +++ b/app/views/comments/_form.html.erb @@ -0,0 +1,9 @@ +<%= form_for([@site, @site.comments.build]) do |f| %> +
+ <%= f.text_area :comment %> +
+ +
+ <%= f.submit %> +
+<% end %> \ No newline at end of file diff --git a/app/views/comments/edit.html.erb b/app/views/comments/edit.html.erb new file mode 100644 index 0000000..e821076 --- /dev/null +++ b/app/views/comments/edit.html.erb @@ -0,0 +1,13 @@ +<<<<<<< HEAD +======= +

Editing site

+ +>>>>>>> b99503f08cc204480f05572e31c865d1d1601d6f +<%= form_for([@site, @comment]) do |f| %> +
+ <%= f.text_area :comment %> +
+
+ <%= f.submit %> +
+<% end %> \ No newline at end of file diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index e4c9e36..cc2b2d5 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -6,7 +6,11 @@ <%= javascript_include_tag "application" %> <%= csrf_meta_tags %> - + @@ -14,22 +18,41 @@