精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-24
目标:做一个博客系统,有两张表,分类(post_categories)和文章(posts).想保持rails的scaffold,尽量减少代码编写,来完成CRUD功能。 1。数据库表: \db\migrate\002_create_post_categories.rb \db\migrate\002_create_post.rb 2.用generate生成Models和Controllers 3.用generate生成views: generate:scaffold 默认情况下,我们看到:\app\views\post\new.rhtml 但因为posts外键连接了表post_categories,而以上的表单没有指定category_id字段,所以操作是不成功的。现在做以下修改: 这样,程序运行成功,可以添加文章了。 怎么办。。。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-10-24
kenrome 写道 <p><strong>目标:做一个博客系统,有两张表,分类(post_categories)和文章(posts).想保持rails的scaffold,尽量减少代码编写,来完成CRUD功能。</strong></p>
从视图里面把相关的ruby代码和html删掉
<p><strong>1。数据库表:</strong></p> <p><font color="#993300"><font color="#000000">\db\migrate\002_create_post_categories.rb</font><br /> create_table :<strong>post_categories</strong> do |t|<br /> t.column :name, :string, :null =>false</font></p> <p><font color="#993300"><font color="#000000">\db\migrate\002_create_post.rb</font><br /> create_table :<strong>posts</strong> do |t|<br /> t.column :category_id, :integer, :null =>false<br /> t.column :title, :string<br /> t.column :doc, :text<br /> t.column :addTime, :datetime, :default =>'0000-00-00 00:00:00'<br /> t.column :isOpen, :boolean, :default =>true<br /> t.column :acount, :int, :default =>1<br /> end<br /> execute "alter table posts add constraint fk_post_category foreign key (category_id) <br /> references post_categories(id)"</font></p> <p><strong>2.用generate生成Models和Controllers</strong></p> <p><strong>3.用generate生成views:</strong></p> <p>generate:scaffold<br /> model name: post<br /> controller name:post<br /> actions:post</p> <p>默认情况下,我们看到:\app\views\post\new.rhtml<br /> <font color="#993300"><% form_tag :action => 'create' do %><br /> <%= render :partial => 'form' %><br /> <%= submit_tag "Create" %><br /> <% end %></font></p> <p>但因为posts外键连接了表post_categories,而以上的表单没有指定category_id字段,所以操作是不成功的。现在做以下修改:<br /> \app\controllers\post_controller.rb<br /> <font color="#993300" size="2">def new<br /> @post = Post.new<br /> @post_categories=PostCategory.find(:all)<br /> end</font><br /> 即在原来默认的基础上,增加了@post_categories=PostCategory.find(:all)<br /> 然后修改页面:\app\views\post\new.rhtml<br /> <font color="#993300"><% form_tag :action => 'create' do %><br /> <%= render :partial => 'form' %><br /> <select name="post[category_id]"><br /> <% @post_categories.each do |c| %><br /> <option value="<%=c.id%>"><%=c.name%></option><br /> <% end %><br /> </select><br /> <%= submit_tag "Create" %><br /> <% end %></font></p> <p>这样,程序运行成功,可以添加文章了。<br /> 不过问题又来了,因为posts表单是默认渲染的,在添加文章的时候显示了标示文章浏览次数的字段acount.而这个字段是不要求用户输入的,我们需要在添加文章的时候隐藏这个字段,怎么办?</p> <p>怎么办。。。<br /> </p> |
|
返回顶楼 | |
发表时间:2007-10-26
找到了,修改views的_form.rhtml
|
|
返回顶楼 | |
浏览 2375 次