2017-03-03 96 views
1

我對rails非常陌生。我想要做的是將我的信息顯示在我的views/show頁面的種子文件中。這是我的一些種子文件,它只是組織我參與的一個學校項目。將種子文件中的數據顯示到顯示頁面

`Organization.create(
name: "St. John's church", 
location: "222 Bathurst st.", 
description: "Church" 
) 

Organization.create(
name: "Women's Shelter Toronto", 
location: "777 Yonge St.", 
description: "Womens Shelter" 
) 

Organization.create(
name: "Toronto Homeless Shelter", 
location: "111 King St.", 
description: "Shelter" 
)` 

這裏是我的節目頁面

<h1>Organization#show</h1> 


<div class="container"> 
    <h1>Organization:</h1> 
    <%= @organization.name %> 
</div><br> 

<div class="container"> 
    <h1>Description:</h1> 
</div><br> 

和組織控制器

def show 
    @organization = Organization.all 
    end 

    def new 
    @organization = Organization.new 
    end 

    def create 
    @organization = Organization.new(organization_params) 
    if @organization.save 
     redirect_to root_url 

    else 
     render "new" 
    end 
    end 


    private 
    def organization_params 
    params.require(:organization).permit(:name, :description, :location) 
    end 
    end 

這非常基本的我知道,我只是學習。

回答

0

首先,你應該使用使用create!在你的種子文件,這樣,如果你的任何創造失敗,你會看到標記異常。

其次,您作爲show操作使用的內容應該更可能是您的控制器中的#index操作,因爲這是rails約定。當你偏離rails慣例時,你的編程生活會變得更加沉重和慢。

作爲臨時手動測試可以first and second之間運行是這樣的:你的種子文件被運行後,你可以做喜歡的東西:

rails console 
Organization.count 
Organization.all 

,以驗證您的數據正常播種。

在這一點上,您可能會發現執行和調試您的showeditnew操作更直接。

+0

感謝您的幫助:) – caprison

+1

@caprison一定要選擇一個答案,「正確「,這給出了響應者的聲望點。 –

0

seeds.rb文件的目的是填充它的創建後的第一次數據庫。

你做到這一點後,您可以使用Active Record在頁面上顯示數據庫中的新創建的數據。

我在這裏看到2可能出現的問題:

  1. 你不需要``在seeds.rb文件的開頭和結尾。
  2. 沒有運行rake db:seed - 此命令採用seeds.rb文件和實際創建的記錄在數據庫中。
+0

感謝您的幫助:) – caprison

0

在您的OrganizationsController#show方法中,您將@organization設置爲數據庫中所有組織條目的列表。 @ organization.name因此不是一個有效的方法。你可以做兩件事之一。如果您只想在展示頁面上顯示一個組織,這將是典型的,您必須以某種方式找到該組織。當用戶爲特定組織請求顯示頁面時,他通常以REST風格執行此操作,即通過/ organizations /:id進行操作,其中:id是他或她想要顯示的特定組織的標識。在你的控制器中嘗試:

def show 
    @orginazation = Organization.find(params[:id]) 
end 

params []是Rails如何在視圖和控制器之間傳遞信息。在這種情況下,如果用戶請求/ organizations/1,則params [:id]將爲1。然後,您的控制器將訪問數據庫並找到ID爲1的組織。

現在,如果您想要顯示所有組織的列表,您通常會在#index方法中執行此操作。像這樣的東西。

def index 
    @organizations = Organization.all 
end 

然後,你將有一個index.html.erb文件中,你將通過@organizations迭代,就像這樣。

<% @organizations.each do |organization| %> 
    <%= organization.name %> 
    <%= organization.location %> 
    <%= organization.description %> 
<% end %> 

這樣,當你的用戶請求/組織,他或她會看到你的數據庫中的所有組織的列表。

編輯:您的文章也表明,你的控制器被稱爲OrganizationController,它應該是多元的,OrganizationsController和相關的文件名應該是organizations_controller.rb

+0

非常感謝您的幫助。我用你的建議,但我現在得到一個錯誤無法找到「組織與'身份證'=顯示」 – caprison

+0

所以你正在導航到/組織/ 1例如?如果任何應該返回一個錯誤,說:「找不到組織與'ID'= 1。如果是這樣的話,你的種子實際上並不在你的數據庫。 – SYoung82

+0

要添加到我的上述評論,一種方法來測試如果你的種子是實際上你的數據庫中填充的數據類似於@Greg Tarsa在下面推薦的內容:在你的終端中輸入'rails c'或'rails console'運行rails控制檯,然後輸入'Organization.first',這應該返回第一個Organization對象你的數據庫如果存在,如果它不知道你的種子不在你的數據庫中,如果是這種情況,請嘗試運行rake db:在你的終端中進行遷移以填充它們。 – SYoung82