2016-08-13 84 views
2

我試圖通過開始在一個小項目上工作,並有一個問題,我無法繞過軌道和紅寶石。簡單的CRUD不會創建對象

當我試圖爲一個對象創建一個簡單的CRUD時,創建部分再也沒有意義了。

def create 
    if (params.nil? || params[:board].nil?) 
     return render status: 400 
    end 
    @board = Board.create(params["board"]["title"], params["board"]["description"]) 
    #... 
end 

無論出於何種原因,它給了我一個引發ArgumentError 「錯誤的參數數目(2給出,預計0..1)」。所以我想我會簡單地創建它自己,並使用保存的方法來保存到數據庫中,但沒有工作之一:

@board = Board.new(params["board"]["title"], params["board"]["description"]) 
@board.save! 

這給了我NoMethodError「未定義的方法`reverse_merge !爲零:NilClass「

我現在試着分配調試,但無法弄清楚。不是,它不是零,即使它說它使用NilClass。

編輯:表單代碼(視圖)

<%= form_tag :action => 'create' do %> 

<div class="fluid-container"> 
    <p><label for="board_title">Title</label></p> 
    <%= text_field 'board', 'title' %> 
</div> 

<div class="fluid-container"> 
    <p><label for="board_description">Description</label></p> 
    <%= text_area 'board', 'description' %> 
</div> 

<%= submit_tag %> 
<% end %> 

我真的不知道發生了什麼事情,希望有人能提供幫助。在此先感謝 - 前綴/多米尼克

+0

請把你的表單代碼。 –

回答

0

而不是

@board = Board.create(params["board"]["title"], params["board"]["description"]) 

嘗試

@board = Board.create(title: params["board"]["title"], description: params["board"]["description"]) 

你應該能夠做到這一點太

@board = Board.create(params[:board]) 

但出於安全原因,不會工作 http://api.rubyonrails.org/classes/ActionController/Parameters.html

+0

已經嘗試過,並給出** NoMethodError:「未定義的方法'[]'爲零:NilClass」** – PreFiXAUT

+0

抱歉只是編輯 - 你可以嘗試Board.create(title:params [「board」] [標題「],說明:params [」board「] [」description「]),然後閱讀參數說明。出於安全原因,您可以傳遞批量參數 – DavidC

+0

它們都不能工作:/ – PreFiXAUT

0

當你嘗試創建一個新的對象時,你應該傳遞一個散列而不是像你那樣的字符串。

更換控制器的方法來

def create 
    @board = Board.new(board_params) 

    if @board.save 
    redirect_to @board, notice: 'Board was successfully created.' 
    else 
    # render the new page 
    end 
end 

,並添加一個私有方法

private 

def board_params 
    params.require(:board).permit(:title, :description) 
end 
+0

不幸的是也返回到** NoMethodError: 「未定義的方法'[]'爲零:NilClass」** – PreFiXAUT

+0

@PreFiXAUT它看起來像參數是零。你可以將你的控制器方法的內容替換爲'render text:params [「board」]'並告訴我當你點擊'Save Post'時顯示的是什麼? –

+0

它只輸出sinlge'#',就這些。奇怪的是,我直接表演了節目,看看是否有實際的數據,並且我能夠創建一個電路板,但不能悲傷地挽救它。 – PreFiXAUT