2014-04-04 30 views
-1

在導軌教程創建一個blog app在我們創建rails應用程序並在路徑中創建資源之後,我們開始創建一個form_for,用於在指南中創建帖子標題和文本,它告訴我需要添加此行<%= form_for :post, url: posts_path do |f| %>如何在創建,更新,刪除時不使用全部資源的情況下創建Rails應用程序?

posts_path助手被傳遞給:url選項。 Rails將如何處理這個問題,它會將表單指向當前控制器的創建操作,即PostsController,並且會向該路由發送POST請求。

所以我試圖理解的是傳遞到'創建行動'你看我有一個簡單的應用程序,我想要的是當一個文本輸入標題字段和提交按鈕輸入我希望它傳遞給創建操作,我只是將文本放在創建操作視圖或其他視圖中,rails指南通過教授「CRUD」,但我只想了解如何構建不使用「CRUD」的應用程序,例如一個應用程序需要輸入並在另一個視圖中輸出它?

我的表格:

<h1>Here Lets create a simple post</h1> 

<%= form_for :post, url: posts_path do|f| %> 
    <p> 
     <%= f.label :title %> 
     <%= f.text_field :title %> 
    </p> 
    <p> 
     <%= f.submit %> 
    </p> 

    <% end %> 

posts控制器:

class PostsController < ApplicationController 

    def new 
     @post = Post.new 
    end 

    def create 
     @post = Post.new(post_params) 

    end 

    def post_params 
     params_require(:post).permit(:title) 
    end 
end 

創建視圖:

<h1>THis is the post create action</h1> 

<%= @post.title %> 

路線:

Learnnobase::Application.routes.draw do 
    resources :posts 
    root "welcome#home" 
end 

現在我得到一個錯誤,說明uninitialized constant PostsController::Post突出顯示我的創建方法?我已經使用'CRUD'完成了很多Rails應用程序教程我真的想學習如何在不使用'CRUD'的情況下構建一個簡單的應用程序,儘管我使用了「CRUD」的創建操作,但我試圖嘗試使用此應用程序。

回答

1

我們通常使用Rails構建數據庫支持的應用程序,但出於學習目的,您可以這樣做。

您在這裏面臨的問題是:您正在創建Post類的對象,這將成爲您引用的示例中的模型。由於您尚未創建Post模型,因此出現此錯誤。

爲了滿足你的要求,你可以讓你的create行動是:

def create 
    @post = post_params #this will be a hash 
end 

然後更改您的視圖來:

<h1>THis is the post create action</h1> 

<%= @post[:title] %> 
+0

在我看來,它輸出的預期感謝您的幫助,但我也將如何格式化輸出,如可以說我想大寫它我試着<%= @post [:title] .upcase%>,並得到一個錯誤? – user3131148

+0

你得到了什麼樣的錯誤? –

+0

對於{「title」=>「jimmy」}未定義的方法'upcase':ActionController :: Parameters – user3131148

0

既然你已經開始用鋼軌,我會問你是怎麼做到的posts/new頁面加載@post = Post.newposts/new當你沒有動作postmodel文件和類?

這是不可能的。其次,什麼馬諾艋舺曾建議你使用params通過將其分配到一個instancevariable(錯誤的方式使用參數這樣做),如果您嘗試使用create_pathposts資源,這確實就是'/posts'你會最終擊中posts/index行動。 Rails有標準的備用動作名稱,如:index(GET, /posts), :show(GET, /posts/:id), :new(GET, /posts/new), :create(POST, /posts), :edit(GET, /posts/:id/edit), :update(PATCH, /posts/:id)您不應該試圖壓倒他們的目的。

我的理解是,您確實使用了post模型類並加載了posts/new頁面,然後您刪除了post模型類,並嘗試使用您在問題中詢問的內容。你應該尊重Rails'的標準。

相關問題