2014-01-18 28 views
0

所以我有這個書籍數據庫和一個洞穴數據庫。在洞穴中,有一個book_id字段,還有一個user_id字段,這樣我就可以看到誰挖洞了哪本書。將數據庫投入使用時出現問題

現在,我試圖創建一個控制器和視圖,但它不是很好。現在的觀點是這樣看:

<% provide(:title, "Burrow") %> 

<b align="center">Choose the name of the book you want t burrow'</b> 

    <%= form_for(@book) do |f| %> 
      <div class="forms"> 
         <%= f.name %> 
         <%= f.check_box(:book_id) %> 
         <%= f.submit 'Submit!' %> 
       </div> 
     <% end %> 

但是,這使我的地方,因爲我希望把所有的書進入洞穴控制器@books創建了一個錯誤的問題。但我真的沒有看到任何其他方式? \

最後的想法是讓我把所有的書都顯示出來,然後放上一個複選框,這樣我就可以選擇我要挖洞的書了。之後,我還希望列出所有用戶的下拉菜單,我可以選擇爲另一個用戶挖掘該書,但默認值將是登錄用戶,但直到此時爲止。現在我很難理解,爲什麼我的上市書籍解決方案不起作用?

清單我這裏控制器也:

class BurrowsController < ApplicationController 
    before_action :signed_in_user, only: [:index,:edit,:update, :destroy] 
    before_action :admin_user,  only: :destroy 

    def index 
    @burrows = Burrow.all 
    end 

    def show 
    @burrow = Burrow.find(params[:id]) 
    end 

    def new 
    @burrow = Burrow.new 
    end 

    def create 
    @burrow = Burrow.new(burrow_params) 
    if @burrow.save 
     flash[:success] = "Burrowing a book was successful!" 
     redirect_to @burrow 
    else 
     render 'new' 
    end 
    end 

    def listing 
    @book_list = Book.all 
    end 

    # Private section, makes the page unable to be seen for non logged in users 
    private 
    def burrow_params 
    params.require(:burrow).permit(:user_id, :book_id) 
    end 
    def admin_user 
     redirect_to(root_url) unless current_user.admin? 
    end 
    # Redirecting not logged in user etc. 
    def signed_in_user 
    unless signed_in? 
     store_location 
     redirect_to '/sessions/new', notice: "Please sign in!" 
    end 

    end 

end 
+0

它基本上給我一個形式的第一個參數不能包含零值錯誤。所以它沒有得到充滿書名的@book。 – Kaspar

+0

是的,這是一個錯誤類型,但這就是大多數的代碼被命名爲allready,所以我想我現在會去這個.. – Kaspar

回答

0

現在我struggline明白,爲什麼我的本本上市的解決方案不起作用?

我不確定你的意思是什麼。您粘貼的視圖顯然對應於控制器操作Burrows#new

所以我要告訴你什麼地方錯了自己的看法:

<%= form_for(@book) do |f| %> 

這種打印形式爲Book,而不是一個Burrow。你可以用這個表單創建一本新書,但這當然不是你在這裏要做的。


你要在你的控制器所有這些變量:

def new 
    @users = User.all 
    @books = Book.all 
    @burrow = Burrow.new 
end 

所以你可以使用collection_select@users,有@burrow對象與form_for使用,並做了each環上例如,@books,像這樣:

<%= form_for(@burrow) do |f| %> 
    <% @books.each do |book| %> 
    <%= f.check_box :book_ids, multiple: true, book.id, nil %> 
    <% end %> 

    <%= f.collection_select :user_id, @users, :id, :name, {}, selected: current_user.id %> 

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

點擊文件的鏈接對這些命令:collection_select,check_box

這不是理想的代碼,但它是儘可能接近你的例子,因爲我可以得到。


我明白如果您沒有立即得到此信息。你的代碼現在有點亂,而且有太多的錯誤要在一篇文章中解釋並由一行修復。您可能需要重新開始,並在您嘗試一次完成所有操作之前先製作一個單控制器操作

有時候最好坐下來思考一下你想要達到的目標,並且首先展示如何在腦海中實現目標;然後纔開始編程!

它,你正在使用的RailsTutorial通過邁克爾·哈特爾,所以我可以向你推薦現在的問題是,念你讀過一次更徹底,並嘗試堅持自己的例子在我看來,首先,直到你確信自己在真正開始創建自己的應用程序之前。

相關問題