2016-02-12 39 views
0

我試圖創建一個非常簡單的應用程序來確定兩個單詞是否是anagrams,但是我在RoR上做了很多麻煩。我目前被困在這個「Missing template」錯誤。我有以下的形式,這是對的話只有兩個文本框和兩個標籤和一個提交按鈕:提交表單後出現「Missing Template」錯誤

<%= form_for :solver, url: solver_solve_path do |f| %> 
    <p> 
    <%= f.label "First word or sentence" %><br> 
    <%= f.text_field :first %><br> 
</p> 
<p> 
    <%= f.label "Second word or sentence" %><br> 
    <%= f.text_field :second %><br> 
</p> 
<p> 
    <%= f.submit %> 
</p> 
<%end%> 

而在routes.rb中文件我有:

Rails.application.routes.draw do 
    get 'welcome/index' 

    post 'solver/solve' 

    root 'welcome#index' 

的SolverController外觀像這樣:

class SolverController < ApplicationController 
    def create 
     render plain: params[:solver].inspect 
    end 

    def solve 
     wordone = params[:solver][:first] 
     wordtwo = params[:solver][:second] 
     wordone.chars.sort { |a, b| a.casecmp(b) } .join 
     puts wordone 
     wordtwo.chars.sort { |a, b| a.casecmp(b) } .join 
     puts wordtwo 
    end 
end 

然而,當我填寫表格並按下提交我得到一個丟失的模板錯誤:

Missing template solver/solve, application/solve with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: * "/home/mariana/Documents/RD-anagram/anagram/app/views" 

任何人都可以向我解釋發生了什麼,我能做些什麼來解決這個問題?

+0

請用表格填寫你的文件的完整路徑。 – Ilya

+0

'〜/ Documents/RD-anagram/anagram/app/views/welcome/index.html.erb'這是文件的完整路徑,這是你想要的嗎? – Tuma

+0

你認爲輸出結果來自哪個上下文是創建方法,稱爲 – christoandrew

回答

1

由於這是一個post方法,控制器操作應該重定向到另一個常規操作。否則,它將在app/views/solver/solve.html.erb中尋找一個視圖。如果你有這樣的觀點,它會渲染它,否則,它會因你沒有告訴它渲染什麼而咆哮。

+0

所以我假設我通過將此方法定義爲post來犯了一個錯誤?我希望它返回一個布爾值或者一個字符串,這樣我可以渲染一個顯示該信息的頁面。它應該是一個get方法嗎? – Tuma

+0

控制器操作不會按照慣例「返回」值。通常,對於html請求,GET請求將在控制器操作中執行一些邏輯,然後呈現視圖; POST或PUT請求將執行一些操作,寫入數據庫,然後重定向到GET操作,該操作將呈現視圖。你可以渲染來自後置操作的視圖,這只是非常規的。 –

+0

如果您想要一個返回值的方法,它應該寫在模型或模塊上,而不是寫在控制器上。 –

1

您必須創建/app/views/solver/solve.html.erb文件並在此文件中寫入您的表單。

+0

這有效!你能解釋一下這是什麼嗎? – Tuma

+0

http://guides.rubyonrails.org/action_view_overview.html - 請閱讀這篇文章:) – Ilya