我對rails非常陌生,所以請原諒我是否問了這樣一個基本問題。Rails 3 - 使用submit_tag調用控制器方法
我有這個形式我html.erb頁:
<%= form_tag(posts_path(:controller => "posts", :action => "create_thread"), :method => "post") do%>
Title:
<br></br>
<%= text_area_tag 'title', 'Thread\'s title is required!', :rows => 1, :cols => 30 %>
<br></br>
Message:
<br></br>
<%= text_area_tag 'body', nil, :rows => 15, :cols => 50 %>
<br></br>
<%= submit_tag "Create Thread" %>
<% end %>
我定義在控制器中的 「create_thread」 的方法:
class PostsController < ApplicationController
def create_thread
logger.info("Thread created: ")
end
end
在routes.rb中的文件,我創建了一個提交路線:
resources :posts do
collection do
post 'index', :as => :create_thread
end
基本上,當我點擊窗體上的「創建線程」按鈕時,我想要r ails在PostsController類中執行函數「create_thread」,然後加載「index」頁面。但是,當我點擊「創建線程」按鈕時,它直接進入了「索引」頁面(所以路徑至少工作),但它並沒有執行「create_thread」函數。控制器。
這正是它顯示在控制檯上,當我在按鈕上點擊:
Started POST "/posts?action=create_thread" for 127.0.0.1 at 2013-07-14 22:08:35 -0700
Processing by PostsController#index as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"9XVUrStaysmdOc6ug/A3XXX/8bzLkY8ixCkiAfHs9fU=", "title"=>"Thread's title is required!", "body"=>"", "commit"=>"Create Thread"}
這裏是耙路線的輸出
root / posts#index
new_thread_posts GET /posts/new_thread(.:format) posts#new_thread
create_thread_posts POST /posts(.:format) posts#index
current_thread_post GET /posts/:id/current_thread(.:format) posts#current_thread
posts GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post GET /posts/new(.:format) posts#new
edit_post GET /posts/:id/edit(.:format) posts#edit
post GET /posts/:id(.:format) posts#show
PUT /posts/:id(.:format) posts#update
DELETE /posts/:id(.:format) posts#destroy
所以,我怎麼軌道執行「 PostsController中的create_thread函數?過去兩天我一直在網上搜索,嘗試各種各樣的東西,但都沒有爲我工作。
任何提示或指針將不勝感激!
非常感謝您的幫助。
添加的輸出「耙路線」 –
你嘗試登錄後使用您的create_thread行動中redirect_to的? –
@ prasad.surase我用耙子路線的輸出更新了帖子。謝謝 – TATN