对于刚接触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
ruby script/generate controller comment
Adminscontroller.rb
class 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
articlerscontroller.rb
class 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
comment.rb
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
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
<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 %>