我和哈姆一起直接去Padrino学习Ruby。
大多数Padrino文档都假设了对Ruby / Sinatra等的高级知识......
我正在寻找可以浏览的示例,看看它是如何工作的。一个特定的场景是做一个简单的表单。在我的主(索引)页面上,我想要一个带有按钮的“注册”编辑框。
#app.rb
...
get :index, :map => "/" do
@user = "test"
haml: index
end
get :signup, :map => "/signup" do
render :haml, "%p email:" + params[:email]
end
...
在我看来:
#index.haml
...
#signup
-form_for @user, '/signup', :id => 'signup' do |f|
= f.text_field_block :email
= f.submit_block "Sign up!", :class => 'button'
...
这不起作用。 (render
)中的/signup
从不做任何事情。
注意,我知道我需要定义我的模型等...;但是在我的学习中,我正在努力做到这一点。
而不仅仅是告诉我这里我做错了什么,我真正喜欢的是一个相当完整的Padrino示例应用程序,它使用表单(博客示例仅涵盖Padrino表面区域的一小部分)。
哪里可以找到大量的Padrino样品? : - )
修改
以下答案有助于指出更多样本。但是我仍然没有对上面代码的错误感到高兴。
我在黑客攻击中略微改变了这一点,但我还是没有正确地传递:email
param:
#index.haml
...
#signup
- form_for :User, url(:signup, :create), :method => 'post' do |f|
= f.text_field_block :email
= f.submit_block "Sign up!"
...
#signup.rb
...
post :create do
@user = User.new(params[:email])
...
end
编辑已添加模型:
#user.rb
class User
include DataMapper::Resource
property :id, Serial
property :name, String
property :email, String
...
end
运行时,params[:email]
始终为nil
。我把它与其他一些样品进行了比较,我看不出我做错了什么。救命啊!
答案 0 :(得分:2)
您可以在此处浏览一些示例网站:https://github.com/padrino/padrino-framework/wiki/Projects-using-Padrino
或者您可以在此处浏览padrinorb.com的来源:https://github.com/padrino/padrino-web
最好的方法是生成admin:padrino g admin
,您应该看到表单的工作方式。
标记form
默认执行post
操作,除非您指定:method => :get|:put|:delete
,因此在您的控制器中,您必须将:get
更改为:post
post :signup, :map => "/signup" do ...
由于您使用的form_for :user
参数位于params[:user]
,因此您需要发送电子邮件params[:user][:email]