rails中scaffold自动生成的CRUD,我怎样修改渲染的表单
关键字: Rails目标:做一个博客系统,有两张表,分类(post_categories)和文章(posts).想保持rails的scaffold,尽量减少代码编写,来完成CRUD功能。
1。数据库表:
\db\migrate\002_create_post_categories.rb
create_table :post_categories do |t|
t.column :name, :string, :null =>false
\db\migrate\002_create_post.rb
create_table :posts do |t|
t.column :category_id, :integer, :null =>false
t.column :title, :string
t.column :doc, :text
t.column :addTime, :datetime, :default =>'0000-00-00 00:00:00'
t.column :isOpen, :boolean, :default =>true
t.column :acount, :int, :default =>1
end
execute "alter table posts add constraint fk_post_category foreign key (category_id)
references post_categories(id)"
2.用generate生成Models和Controllers
3.用generate生成views:
generate:scaffold
model name: post
controller name:post
actions:post
默认情况下,我们看到:\app\views\post\new.rhtml
<% form_tag :action => 'create' do %>
<%= render :partial => 'form' %>
<%= submit_tag "Create" %>
<% end %>
但因为posts外键连接了表post_categories,而以上的表单没有指定category_id字段,所以操作是不成功的。现在做以下修改:
\app\controllers\post_controller.rb
def new
@post = Post.new
@post_categories=PostCategory.find(:all)
end
即在原来默认的基础上,增加了@post_categories=PostCategory.find(:all)
然后修改页面:\app\views\post\new.rhtml
<% form_tag :action => 'create' do %>
<%= render :partial => 'form' %>
<select name="post[category_id]">
<% @post_categories.each do |c| %>
<option value="<%=c.id%>"><%=c.name%></option>
<% end %>
</select>
<%= submit_tag "Create" %>
<% end %>
这样,程序运行成功,可以添加文章了。
不过问题又来了,因为posts表单是默认渲染的,在添加文章的时候显示了标示文章浏览次数的字段acount.而这个字段是不要求用户输入的,我们需要在添加文章的时候隐藏这个字段,怎么办?
怎么办。。。
评论
<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>
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 1448 次
- 性别:

- 来自: 成都

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
关于Rails2.0下的File-Col ...
pure 写道<%= image_tag url_for_file_col ...
-- by distortion -
关于Rails2.0下的File-Col ...
<%= image_tag url_for_file_column 'gr ...
-- by pure -
升级到Rails2.0 ,出现HT ...
看看log里怎么说。
-- by ashchan -
rails中scaffold自动生成 ...
找到了,修改views的_form.rhtml
-- by kenrome -
rails中scaffold自动生成 ...
kenrome 写道<p><strong>目标:做一个博客系统,有两 ...
-- by 9esuLuciano






评论排行榜