zoukankan      html  css  js  c++  java
  • [ruby on rails] 跟我学之(8)修改数据

    修改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,谢谢!

  • 相关阅读:
    函数
    函数知识点 --- 函数的认知,组成,格式 --------------- #10
    打包app
    vue ie
    css position
    awesome vue
    20110636乐建18588529432
    vue2.0-基于elementui换肤[自定义主题]
    三目运算符,多条件判断
    微信二次开发准备工作
  • 原文地址:https://www.cnblogs.com/Tommy-Yu/p/4142096.html
Copyright © 2011-2022 走看看