2016-06-10 74 views
0

我是Ruby on Rails的新手, 我想製作一個簡單的文本字段,您可以在其中更改內容並將其存儲在數據庫中。但提交按鈕不會調用配置文件控制器。 「Foo」從未被提出。Ruby on rails提交按鈕不會調用控制器

的routes.rb:

Rails.application.routes.draw do 
    devise_for :users 
    get 'welcome/user' 
    resources :profiles 
end 

user.html.erb:

... 
<%@profile=Profile.find_by user_id: current_user.id%> 
<%= form_for (@profile) do |f| %> 
<%= f.text_field :name%> 
<%= f.submit%> 
<% end %> 

profiles_controller.rb:

class ProfilesController < ActionController::Base 
    def update 
    raise "foo" 
    end 
end 
+0

看看你的服務器,看看是什麼動作叫做 – Ursus

+0

'<%@ profile = Profile.find_by user_id:current_user.id%>' - 那東西絕對屬於控制器。 –

+0

也許你需要爲'form_for'幫手提供動作。 –

回答

0

你真的應該分開了這一點。

class ProfilesController < ActionController::Base 
    def edit 
    @profile = Profile.find_by(user_id: current_user.id) 
    end 

    def update 
    raise "Foo" 
    end 
end 

,並創建相關的視圖文件,edit.html.erb:

<%= form_for (@profile, method:) do |f| %> 
    <%= f.text_field :name %> 
    <%= f.submit %> 
<% end %> 

對於問題本身,我建議也許看日誌文件。在您的終端上運行tail -f /path/to/app/log/*,然後嘗試提交表單。如果您在這裏沒有看到任何東西,這很常見,如果是這樣的話,請使用瀏覽器的開發工具來檢查表單。你應該有這樣的事情:

<form id="profile-form" action="/profiles/1" method="post"> 
... 
</form> 

查找出action="/profiles/1其中1是檔案實體的ID。

+0

謝謝,「foo」 - 消息實際上被提出,我期望看到它在瀏覽器中。 –