【问题标题】:Using Padrino form helpers and formbuilder - getting started使用 Padrino 表单助手和表单生成器 - 入门
【发布时间】:2011-11-14 21:25:25
【问题描述】:

我通过直接与 Haml 一起去 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'
...

这不起作用。 (/signup) 中的 render 从不做任何事情。

注意,我知道我需要定义我的模型等...;但我正在努力学习。

与其只是告诉我我做错了什么,我真正想要的是一个相当完整的使用表单的 Padrino 示例应用程序(博客示例仅涵盖了 Padrino 表面积的一小部分)。

我在哪里可以找到大量出色的 Padrino 样品? :-)

编辑

下面的答案有助于为我指出更多示例。但是我仍然对上面的代码有什么问题感到不满。

我在我的黑客攻击中稍微改变了这一点,但我仍然没有正确传递 :email 参数:

#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。我已经将它与一堆其他样本进行了比较,我看不出我做错了什么。救命!

【问题讨论】:

    标签: ruby padrino


    【解决方案1】:

    您可以在此处浏览一些示例网站:https://github.com/padrino/padrino-framework/wiki/Projects-using-Padrino

    或者您可以在此处浏览 padrinorb.com 的来源:https://github.com/padrino/padrino-web

    最好的方法也是生成管理员:padrino g admin,您应该在其中查看表单的工作方式。

    标签form 默认执行post 操作,除非您指定:method => :get|:put|:delete,因此在您的控制器中您必须将:get 更改为:post

    post :signup, :map => "/signup" do ...

    由于您使用 form_for :user 参数在 params[:user] 中,因此要获取电子邮件,您需要输入 params[:user][:email]

    【讨论】:

    • 链接到Projects-using-Padrino 非常有帮助。我找了又找,从来没有看到过。注意admin 使用部分,我(还没有)所以没有帮助。我还没有走出困境,但你的回答有所帮助。谢谢。
    • 另外,我询问的render:signup 处理程序中。我遇到的问题是params[:email] 始终是nil...
    • 试试简单的text_field :email
    • 还记得默认form(s)执行post动作,所以你的控制器必须是:post :signup, :map => "/signup"
    • 我试过text_field :email 和同样的问题。另外,我正在使用post。请参阅上面我的问题中的第二个示例。感谢您尝试提供帮助!!!!
    猜你喜欢
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多