2016-04-30 27 views
0

我目前在我的複選框data-url「/ todos?id = f483e4a8cb1a728f」,當它應該只是「/ todos/f483e4a8cb1a728f」我使用友好的id爲隨機蛞蝓。友好的ID在checkbox_tag軌道4

目前我打電話給它:data:{remote:true,url:url_for(controller::todos,id:todo),method:「PATCH」} id:todo,我試過了todo.id但是給我我不想要的帖子的數量 - 我想要slu。子。

有誰知道我該如何解決這個問題?

謝謝親切的先生們。

編輯:更多的上下文的要求

<%= check_box_tag 'todo[completed]', todo.id, todo.completed, data: { remote: true, url: url_for(controller: :todos, id: todo), method: "PATCH" }, id: todo.id %> 
<%= label_tag todo.id, "COMPLETE", :class => 'strikethrough' %> 

這是我如何調用它 - 因爲我想完成我對指數的待辦事項,而不是要去和更新待辦事項/:ID /編輯。然而,它給了我一個錯誤,當我點擊複選框,因爲URL是這樣「/待辦事項ID = f483e4a8cb1a728f?」時,它應該只是「/待辦事項/ f483e4a8cb1a728f」

編輯:

我的行動

def completed 
    if @todo.update_attributes(:completed => params[:completed]) 
     flash[:success] = "Wowzers." 
     redirect_to dashboard_path 
    else 
     flash.now[:error] = "Not so wowzers..." 
     render :new 
    end 
    end 

我的路線

resources :todos do 
    member do 
     # post 'completed' 
     patch 'todos/:id' => 'todos#completed' 
    end 
    end 
+0

調用什麼和如何?你可以包含更多的上下文嗎? – max

+0

已更新,希望能提供更多見解? –

回答

1

首先,你需要配置爲patch '/todos/:id'的路線。

如果你已經有了,在url_for參數把這個名字的動作,如:

url_for(controller: :todos, action: :something, id: todo.id)

如果你還沒有采取行動,你必須創建它。

url_for將返回/todos?id=f483e4a8cb1a728f,因爲它正在考慮index動作爲默認,和這條道路沒有路內的:id參數,助手把它作爲一個參數(查詢字符串)。

+0

我已經設置了一個動作,但是在補丁'/ todos /:id'中添加了一個錯誤'Missing:controller key on routes definition,please check your routes。'我從來沒有見過它,請你澄清一下嗎? –

+0

你是如何定義它的?我認爲最簡單的語法是'patch'todos /:id'=>'todos#your_action''。 –

+0

哦,對不起,我的壞。現在唯一的問題是它顯示id兩次'todos/e3309e65a5f225ec696807ee1f5be3/todos/e3309e65a5f225ec696807ee1f5be3'或'todos/19/todos/19'如果我做id:todo.id作爲反對todo –