我创建了一个小应用程序,它有一个发布消息的栏,我想在每条消息中添加一个删除按钮,这样我就可以删除它。
这是我的代码:
控制器:
class HomeController < ApplicationController
def create
@message = Message.new(params[:message])
if @message.save
redirect_to "/home/show_msg"
else
render :action => "/home/home_page"
end
end
def home_page
@message = Message.new
end
def show_msg
@postwords = Message.all
end
def index
end
end
视图(主页):
<center><h1>MiNibloG</h1></center>
<br>
<br>
<div align="center">
<%= form_for @message, :url => "/home/create" do |f| %>
<%= f.label :postword %>
<%= f.text_field :postword %>
<%= f.submit "Post" %>
<% end %>
</div>
视图(show_msg):
<center>
<h1>Posts list</h1>
<br>
<br>
<ul>
<% @postwords.each do |p| %>
<%= p.postword %><br><br>
<% end %>
</ul>
</center>
这就是迁移:
class CreateMessages < ActiveRecord::Migration
def self.up
create_table :messages do |t|
t.string :postword
t.timestamps
end
end
def self.down
drop_table :messages
end
end
请看一下脚手架,脚手架非常适合您的情况。
rails generate scaffold message postwords:string
此命令为您生成视图、控制器和迁移。
对于使用自己的非REST控制器进行删除,请使用以下代码(未测试)
<% @postwords.each do |p| %>
<%= p.postword %>
<%= link_to 'Destroy', destroy(p) %><br>
<% end %>
在控制器中:
def destroy
@message = Message.find(params[:id])
@message.destroy
respond_to do |format|
format.html { redirect_to some_route }
format.xml { head :ok }
end
end
在路由中添加销毁操作。rb