使用Padrino表单助手和formbuilder - 入门

时间:2011-11-14 21:25:26

标签: ruby padrino

我和哈姆一起直接去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。我把它与其他一些样品进行了比较,我看不出我做错了什么。救命啊!

1 个答案:

答案 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]