2013-05-31 28 views
0

空條目我是新來的紅寶石,試圖按照官方文檔,並創建一個基本形式創建一個帖子:Rails的形式將通過模型

<%= form_for @post, :url => { :action => "create" }, :html => {:class => "nifty_form"} do |f| %> 
    <%= f.text_field :title %> 
    <%= f.text_area :entry, :size => "60x12" %> 
    <%= f.submit "Create" %> 
<% end %> 

的形式成功添加到數據庫中的條目,但是一個空的,我想我必須在我的控制器中丟失一些東西?我需要以某種方式傳遞變量嗎?

def create 
@post = Main.create 
end 
+0

您關注哪些文檔? –

+0

你可以在這裏發佈日誌嗎? – visnu

+0

哪個日誌visnu?這是我下面的文檔,特別是如果你向下滾動到表單綁定到oject http://guides.rubyonrails.org/form_helpers.html – Melbourne2991

回答

1

一個基本的創建操作可以是這樣的。你首先初始化一個新的職位。取決於是否成功保存了您繼續。

# app/controllers/posts_controller.rb 
class PostsController < ActionController::Base 
    def create 
    @post = Post.new(params[:post]) 

    if @post.save 
     redirect_to @post, notice: 'Post has been created.' 
    else 
     render :new 
    end 
    end 
end 

您可以縮短您的表格。

<%= form_for @post do |f| %> 
    <%= f.label :title %> 
    <%= f.text_field :title %> 

    <%= f.text_area :entry, :size => "60x12" %> 

    <%= f.submit %> 
<% end %> 

你可以看到很好的例子代碼沿着這些線路,當你產生支架,所以我會鼓勵你去嘗試$ rails generate scaffold Post title body:text和學習的榜樣。

+0

WY不會這項工作\t高清創建 \t @post =主。創建(:title => params [:title],:entry => params [:entry]) \t end – Melbourne2991

+0

在一個步驟中創建也會將數據保存在數據庫中。然而,['create'](http://api.rubyonrails.org/classes/ActiveRecord/Persistence/ClassMethods.html#method-i-create)的返回值是:「無論對象是否爲成功保存到數據庫中或沒有。「爲了區分驗證是否已通過並且對象已被保留,可以在創建操作中檢查「post.persisted?」。不過,我認爲上面提出的選擇是習慣的方式。你嘗試過腳手架嗎?這是非常好的代碼學習。 –

+0

生病了,歡呼 – Melbourne2991

0

提交形式通過輸入到該表格中的值(連同一些其它信息)提供給控制器作爲所謂的「PARAMS」散列 - 的PARAMS將包含標有形式的名稱的塊,在這個案例「後」。

您需要在創建新對象時使用params中的post塊。

def create 
    @post = Main.new(params[:post]) 
    if @post.save 
    # handles a successful save 
    else 
    # handles validation failure 
    end 
end 
0

嘗試:

@post = Main.new(params[:post]) 
@post.save