赵龙 全栈之路

自学 如何实作新增、编辑、删除等功能按钮

| Comments

自学教材

从 “rails 101” 教材的 4-2 实作讨论群“新增”功能4-5 实作讨论群“删除”功能 总结出知识点。

以实作 edit action(编辑按钮)为示例

第一步:建立 edit action(编辑按钮) 。这一步实现了edit action(编辑按钮) ,没有这一步就无从点击按钮链接,进入编辑页面。这个文件中各个action 的上下位置对最终效果无影响。建议:按照建立的先后顺序,从上到下排列。

修改 app/controllers/groups_controller.rb 加入 edit action

app/controllers/groups_controller.rb
class GroupsController < ApplicationController

  #  ...

  def show
    @group = Group.find(params[:id])
  end

+ def edit
+  @group = Group.find(params[:id])
+ end

  #  ...
 
end

第二步:建立 edit action 的表单。 没有这一步,点击按钮链接后没有可以跳转的页面, edit action(编辑按钮) 就只是一个空壳。

新增 app/views/groups/edit.html.erb,终端执行以下命令实现:
touch app/views/groups/edit.html.erb

app/views/groups/edit.html.erb
<div class="col-md-4 col-md-offset-4">
    <h2>编辑讨论版</h2>

    <hr>
    <%= form_for @group do |f| %>

    标题
    <%= f.text_field :title %>
    <br>
    叙述
    <br>
    <%= f.text_area :description %>
    <br>

    <%= f.submit "Submit", :disable_with => 'Submiting...' %>
    <% end %>

</div>

然后打开 http://localhost:3000/groups/1/edit,可以见到成果

第三步:实作 update action 。目前,缺少接受 edit 里的表单送出的信息,真正更新存在数据库里的数据,需要实作 update action 实现这点不然会出现以下的报错信息。 否则,前几步相当于白做了。只是一个花架子,并未真正实现 edit action(编辑按钮) 的功能。

修改 app/controllers/groups_controller.rb

app/controller/groups_controller.rb
class GroupsController < ApplicationController

    # ... 

  def create
    @group = Group.new(group_params)
    @group.save

    redirect_to groups_path
  end

+  def update
+    @group = Group.find(params[:id])
+
+    @group.update(group_params)
+
+    redirect_to groups_path, notice: "Update Success"
+  end

    # ... 

end

试着更新一下数据,成功画面应该会有“绿色”提示信息。

个人理解

实作一个功能按钮,先区分种类:

功能按钮基本框架,以 edit action(编辑按钮)举例:

  • (*必须)功能按钮:在 app/controllers/groups_controller.rb 建立可以点击的功能按钮。
  • (*非必须)功能按钮的表单:

终端执行 touch app/views/groups/edit.html.erb ,建立功能按钮的表单,实现点击功能按钮后,跳转进入的页面。

  • (*非必须)接受更新的资料 action:在 app/controllers/groups_controller.rb 建立 update action,实现接受功能按钮的表单发过来的更新数据资料。

Comments

comments powered by Disqus