首页 > 代码库 > [ruby on rails] 跟我学之修改数据
[ruby on rails] 跟我学之修改数据
修改views
修改index视图(app/views/posts/index.html.erb),添加编辑链接,如下:
<h1>Our blogs</h1><% @posts.each do |post| %> <h2><%=link_to post.title,post%></h2> <%=post.context%><br/><hr/> <p><%= link_to "Edit",edit_post_path(post)%></p><% end %><p><%= link_to "Add a post", new_post_path %></p>
即添加以下逻辑:
<p><%= link_to "Edit",edit_post_path(post)%></p>
其中, edit_post_path,是之前《[ruby on rails] 跟我学之路由映射》提到的edit动作的prefix添加了_path后缀后的快捷方式,能够接受参数,此处接受post实例对象。
然后是编辑视图,不妨先把new视图拷贝下,作为编辑视图。修改下标题和提交链接,使之成为编辑对应的信息。如下:
<h1>Edit post</h1><%= form_for @post do |f| %> <p> <%= f.label :title%><br/> <%= f.text_field :title%> </p> <p> <%= f.label :context%><br/> <%= f.text_area :context%> </p> <p> <%= f.submit "Edit Post"%> </p><% end %>
修改actions
那么接下来,需要修改动作,是edit动作呢?还是update?由于加载是get,所以先修改edit,如下:
def edit @post = Post.find(params[:id]) end
以上只是处理了edit的get请求,post请求需要修改update动作,如下:
def update @post = Post.find(params[:id]) if @post.update_attributes(post_params) redirect_to posts_path, :notice=>"Your post has been updated" else render "edit"
end end
其中post_params是之前章节提到的强类型。
运行服务
rails s,然后打开 http://localhost:3000/posts ,编辑并提交,如下图:
转载请注明本文来自:http://www.cnblogs.com/Tommy-Yu/p/4142096.html,谢谢!
[ruby on rails] 跟我学之修改数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。