大家好,(我是 Rails 的初学者)
我创建了一个看起来像这样的 Controller :
class HomeController < ApplicationController
def homepage
end
def showmsg
@postword = params[:p]
end
end
showmsg View 如下所示:
<%= @postword %>
我的主页 View 如下所示:
<%= form_tag( {:controller => 'home', :action => 'showmsg'}, :method => "post") do %>
<%= text_field_tag(:p,@postword) %>
<%= submit_tag("post") %>
<% end %>
现在我有一个表单,我可以在其中写一些东西,它会显示在 showmsg View 中。 我用参数创建了一个模型 :posts 也有一个 :description “文本”字段。 我的问题是我如何在代码中实现模型,这样我写的任何东西都会在一个列表中,其中包含我之前写的东西,因为现在(很明显)如果我写了一些东西,它会删除我之前写的东西。
谢谢大家!
最佳答案
我认为你的方法不是很像 rail...所以如果你正在学习 rails...你就学错了。
制作模型。称其为“消息”:
rails generate model Message content:string
记得迁移(希望你的数据库设置正确):
rake db:migrate
然后在您的 Controller 中,当您发布时,您可以创建这样的消息:
def create #instead of showmsg... 'create' is the standard name for this
Message.create(params[:message])
@messages = Message.all
end
这将在数据库中创建消息,然后它将所有消息从数据库中取出并放入@messages。
您需要编辑您的表单,以便它使用 form_for
。您需要传递给它 @message
,这是您的第一个 Controller 操作创建的 Message.new
的一个实例。你应该称这个为 new
在您的 create.erb.html 文件中,您显示所有这样的消息:
<ul>
<% @messages.each do |message| %>
<li><%= message.content %></li>
<% end %>
</ul>
我实际上不建议在创建操作中显示所有消息 - 它应该真正发生在 index
操作中并且您应该重定向...但我们需要保持简单。只需用谷歌搜索或观看 Ryan 的一些截屏视频,您就会明白。
你就完成了。这就是做事的“Rails Way”。最好按照他们希望您学习的方式学习它。
我还赞扬您通过缩进正确格式化代码,并开始将您的方法命名为真正的英语。例如,showmsg
不好,而 show_message
好很多。
如果所有这些都令人困惑,那么只需创建一个新项目,然后键入:
rails generate scaffold message content:string
它基本上会构建您想要的应用程序以及更多内容。您只需阅读代码,看看他们是如何做到的。
希望对您有所帮助。
关于ruby-on-rails - 如何将我的模型连接到我的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6201941/