好的,这是一个noobie问题。我已经创建了一个表单,可以从表单中将数据保存到数据库中。
我想在视图或控制器中显示数据,这是我从表单中获得的。
以下是表单的代码。
控制器: msgs_controller.rb
class MsgsController < ApplicationController
def new
@msg = Msg.new
@msgs = Msg.all
end
def create
@msg = Msg.new(msg_params)
if @msg.save
redirect_to msgcomp_path
end
end
def msg_params
params.require(:msg).permit(:name, :emails, :content, :phone)
end
end
视图: new.html.haml
.row
.col-md-12
.col-md-4
//Home page text
.text-title
%h1 DMS International Ltd.
.text-norm
%p London Heathrow: +44 (0)20 8897 1766
Suite 207, UCH House, Old Bath Road, Colnbrook, Berkshire SL3 0NW
%p London Gatwick: +44 (0)1293 772608
Unit 1, Bridge Industrial Estate, Balcombe Road, Horley, Surrey RH6 9HU
.col-md-8
%h1 Contact DMS International
.contactform
= form_for @msg do |f|
Full Name:
%br
= f.text_field :name
%br
Email:
%br
= f.text_field :emails
%br
Phone Number:
%br
= f.text_field :phone
%br
How can we help you ?
%br
= f.text_field :content, :class => 'content'
%br
= f.submit 'submit', :class => 'btn btn-primary'
TEMP (will be replaced with email) Msgs:
- @msgs.each do |msg|
%ul
= msg.name
%br
= msg.emails
%br
= msg.content
%br
= msg.phone
%br
现在我想要做的是从数据库获取数据不仅仅是为了这个视图,而是通过做类似的事情来说明主页? (@ msg.emails)但我不知道该怎么做。
我希望能够得到它,以便我可以通过电子邮件发送从表格收集的人员信息。
现在我非常感谢你对此事的帮助。如果我自己找到解决方案,但我一直在寻找数小时/超过一天,我也会及时通知您。谢谢。
答案 0 :(得分:0)
在Rails中,ID列在显示资源时按惯例使用。 因此,假设您有以下路线定义:
resources :msgs, only: [:show, :index, :new, :create]
这将创建以下路线:
POST /msgs | msgs#create
GET /msgs/new | msgs#new
GET /msgs/:id | msgs#show
GET /msgs | msgs#index
注意show route的:id
部分 - 它的名称是动态段。
现在在我们的控制器中,我们可以创建缺少的操作:
class MsgsController < ApplicationController
def show
@msg = Msg.find(params[:id])
end
def index
@msg = Msg.all
end
def new
@msg = Msg.new
@msgs = Msg.all
end
def create
@msg = Msg.new(msg_params)
if @msg.save
# Redirects to our new show action
redirect_to @msg
end
end
def msg_params
params.require(:msg).permit(:name, :emails, :content, :phone)
end
end
查询另一个控制器方法的工作方式完全相同。 要查找指向特定电子邮件地址的邮件,我们可以执行以下操作:
@msgs = Msg.where(email: 'bob@example.com')
在不同的控制器中查询没有区别。
如果我想在根执行Pages#home
中显示所有邮件,例如:
class PagesController < ApplicationController
def home
@msgs = Msg.all
end
end
-# app/views/pages/home.html.haml
- @msgs.each do |msg|
p= msg.emails
了解更多: