2016-04-22 45 views
0

如何創建一個可讓用戶進行GET創建的路徑?如何使用GET創建路徑?

<%= link_to 'New Challenge', challenges_path(name: 'foo') %> #takes user to index 

challenges_controller

def create 
    @challenge = Challenge.new(challenge_params) 
    if params[:step] == '2' 
     @challenge = current_user.challenges.build(challenge_params) 
     @challenge.name = challenge_params[:name] 
     if @challenge.name == 'foo' 
     @challenge.category = 'habit' 
     else 
     @challenge.category = 'goal' 
     end 
     @challenge.save 
     redirect_to @challenge 
     respond_modal_with @challenge 
    end 
    end 

挑戰/ create.html.erb

<%= simple_form_for(@challenge) do |f| %> 
    <%= hidden_field_tag :step, 2 %> 
    etc.. 
<% end %> 

回答

2

你可以這樣做:

首先在routes.rb如下創建GET請求路由到challenges#create

get 'create_challenge' => 'challenges#create'

現在,你可以用它來使get請求創建路徑:

<%= link_to 'New Challenge', create_challenge_path(name: 'foo') %> 

我不'不知道challenge_params是什麼使create行動正常工作,你必須通過challenge_params

如果需要PARAMS爲:{challenge: {name: 'foo'}}你可以如下操作:

<%= link_to 'New Challenge', create_challenge_path(challenge: {name: 'foo'}) %> 
0

首先,創建操作應該由POST請求被觸發(GET是用於閱讀,因爲它的名字是建議)。

典型CRUD控制器具有以下動作映射到HTTP方法:

Create - POST; 
Read - GET; 
Update - PUT; 
Delete - DELETE. 

從請求轉發給控制器的路由#動作在配置/ routes.rb中文件中定義的,並且將看起來像這樣:

Rails.application.routes.draw do 
    post '/challenges', to: 'challenges#create', as: 'challenges_create' 
end 

更好地閱讀Rails的指導 - Action ControllerRails Routing