对于刚接触ruby on rails的程序员来说有一个很好demo学习对自己开发和学习是很有帮助的,接下来我们一起学习下!blog的开发过程吧!
我用的ruby是1.8.7 rails2.0 gem是1.31
首先第一然我们讲一个项目吧!
rails blog 这样我们就生成了一个blog的项目cd blog的根目录 然后我们生成脚手架吧
ruby script/generate scafferd articles title:string text:text keyword:string userid:refercer
ruby script/generate scafferd users username:string password:string
ruby script/generate model comment text:string userid:refercer articleid:refercer
Adminscontroller.rbruby script/generate controller comment
articlerscontroller.rbclass AdminsController < ApplicationController # GET /admins # GET /admins.xml def index @admins = Admin.find(:all) respond_to do |format| format.html # index.html.erb format.xml { render :xml => @admins } end end # GET /admins/1 # GET /admins/1.xml def show @admin = Admin.find(params[:id]) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @admin } end end # GET /admins/new # GET /admins/new.xml def new @admin = Admin.new respond_to do |format| format.html # new.html.erb format.xml { render :xml => @admin } end end # GET /admins/1/edit def edit @admin = Admin.find(params[:id]) end # POST /admins # POST /admins.xml def create @admin = Admin.new(params[:admin]) respond_to do |format| if @admin.save flash[:notice] = 'Admin was successfully created.' format.html { redirect_to(@admin) } format.xml { render :xml => @admin, :status => :created, :location => @admin } else format.html { render :action => "new" } format.xml { render :xml => @admin.errors, :status => :unprocessable_entity } end end end # PUT /admins/1 # PUT /admins/1.xml def update @admin = Admin.find(params[:id]) respond_to do |format| if @admin.update_attributes(params[:admin]) flash[:notice] = 'Admin was successfully updated.' format.html { redirect_to(@admin) } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @admin.errors, :status => :unprocessable_entity } end end end # DELETE /admins/1 # DELETE /admins/1.xml def destroy @admin = Admin.find(params[:id]) @admin.destroy respond_to do |format| format.html { redirect_to(admins_url) } format.xml { head :ok } end end def login if request.post? @admin=Admin.find_by_username(params[:username]) #params[:username]=="huangbing"&¶ms[:password]=="123456" #puts @admn.username if @admin if @admin.passworld==params[:password] session[:admin_id]=@admin if @admin.username=="admin" redirect_to (:controller=>"admins",:action=>"index") else redirect_to (:controller=>"articles",:action=>"myblog") # redirect_to :action=>"login"#,:text=>"你输入用户名的有误!" end else flash[:notice] = 'password is not found!.' render :action=>"login" end # render(:action=>:login) # @admin=Admin.new #render(:controller=>:articles,:action=>:index) #@redirect_to "login" #redirect_to @admin else flash[:notice] = 'username is not found!' render :action=>"login" end else render :action=>"login" #render(:action=>:login) end end def register if request.get? @admin=Admin.new else Admin.new(params[:admin]) redirect_to (:action=>"login") end end end
comment.rbclass ArticlesController < ApplicationController # GET /articles # GET /articles.xml def index @articles = Article.find(:all) respond_to do |format| format.html # index.html.erb format.xml { render :xml => @articles } end end # GET /articles/1 # GET /articles/1.xml def show @article = Article.find(params[:id]) #显示评论的用户名 #@admin=Admin.find(@article.comments.admin_id) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @article } end end # GET /articles/new # GET /articles/new.xml def new @article = Article.new @article.admin_id=session[:admin_id].id respond_to do |format| format.html # new.html.erb format.xml { render :xml => @article } end end # GET /articles/1/edit def edit @article = Article.find(params[:id]) end # POST /articles # POST /articles.xml def create @article = Article.new(params[:article]) respond_to do |format| if @article.save flash[:notice] = 'Article was successfully created.' format.html { redirect_to(@article) } format.xml { render :xml => @article, :status => :created, :location => @article } else format.html { render :action => "new" } format.xml { render :xml => @article.errors, :status => :unprocessable_entity } end end end # PUT /articles/1 # PUT /articles/1.xml def update @article = Article.find(params[:id]) respond_to do |format| if @article.update_attributes(params[:article]) flash[:notice] = 'Article was successfully updated.' format.html { redirect_to(@article) } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @article.errors, :status => :unprocessable_entity } end end end # DELETE /articles/1 # DELETE /articles/1.xml def destroy @article = Article.find(params[:id]) @article.destroy redirect_to (:controller=>"articles",:action=>"myblog") # respond_to do |format| # format.html { redirect_to(articles_url) } # format.xml { head :ok } #end end def myblog # @article=Article.find_by_admin_id(session[:admin_id].id) @articles=Article.find_by_sql("select * from articles where admin_id=#{session[:admin_id].id}") #render(:action=>:myblog) end end
class CommentsController < ApplicationController def create #调用评论是用到的 @article=Article.find(params[:article_id]) #保存表单是用到的 # @comment=@article.comments.build(params[:comment]) @comment=@article.comments.create("text"=> params[:text],"admin_id"=>session[:admin_id].id,"article_id"=> params[:article_id]) # @admin=Admin.find(session[:admin_id]) #@comment.save redirect_to @article end def destroy end end
<h1>Listing admins</h1><table> <tr> <th>Username</th> <th>Passworld</th> </tr><% for admin in @admins %> <tr> <td><%=h admin.username %></td> <td><%=h admin.passworld %></td> <td><%= link_to 'Show', admin %></td> <td><%= link_to 'Edit', edit_admin_path(admin) %></td> <td><%= link_to 'Destroy', admin, :confirm => 'Are you sure?', :method => :delete %></td> </tr><% end %></table><br /><%= link_to 'New admin', new_admin_path %><h1>Editing admin</h1><% form_for(@admin) do |f| %> <%= f.error_messages %> <p> <%= f.label :username %><br /> <%= f.text_field :username %> </p> <p> <%= f.label :passworld %><br /> <%= f.text_field :passworld %> </p> <p> <%= f.submit "Update" %> </p><% end %><%= link_to 'Show', @admin %> |<%= link_to 'Back', admins_path %><h1>login in</h1><%= form_tag %> <p> <%=label_tag :username %><br /> <%= text_field_tag :username %> </p> <p> <%=label_tag :password %><br /> <%=text_field_tag :password %> </p> <p> <%=submit_tag "登入" %> </p><% if session[:admin_id] render(:action=>"login") %> <% end%><h1>New admin</h1><% form_for(@admin) do |f| %> <%= f.error_messages %> <p> <%= f.label :username %><br /> <%= f.text_field :username %> </p> <p> <%= f.label :passworld %><br /> <%= f.text_field :passworld %> </p> <p> <%= f.submit "Create" %> </p><% end %><%= link_to 'Back', admins_path %><h1>user register!</h1><% form_for @admin, :url => { :action => "register" } do |f| %> <%= f.error_messages %> <p> <%= f.label :username %><br /> <%= f.text_field :username %> </p> <p> <%= f.label :passworld %><br /> <%= f.text_field :passworld %> </p> <p> <%= f.submit "register" %> </p><% end %><%= link_to 'Back',:controller=>"articles",:action=>"index" %><p> <b>Username:</b> <%=h @admin.username %></p><p> <b>Passworld:</b> <%=h @admin.passworld %></p><%= link_to 'Edit', edit_admin_path(@admin) %> |<%= link_to 'Back', admins_path %>class Admin < ActiveRecord::Base attr_accessible :username, :passworld has_many :comments has_many :articles # def self.login(name, password) # # hashed_password = hash_password(password || "") # find(:first,:conditions => ["name = ? and hashed_password = ?",name, hashed_password]) # # end # # def try_to_login # # Admin.login(self.name, self.password) # # end end class Article < ActiveRecord::Base attr_accessible :text, :title,:keyworld,:admin_id has_many :comments belongs_to :admin end class Comment < ActiveRecord::Base attr_accessible :text, :article_id,:admin_id belongs_to :article belongs_to :admin end