2016-04-30 1 views
0

Я в настоящее время получаю это в своих ячейках «url»/todos? Id = f483e4a8cb1a728f «когда это должно быть просто«/todos/f483e4a8cb1a728f ». Я использую дружественный идентификатор для случайного слизни.дружественный путь id в checkbox_tag rails 4

В настоящее время я называю это как данные: {remote: true, url: url_for (controller:: todos, id: todo), метод: «PATCH»} id: todo и я попытался todo.id, но это дает мне номер сообщения, которого я не хочу - я хочу слизню.

Кто-нибудь знает, как я мог обойти это?

Благодарю вас, господа.

EDIT: Более Context в запрашиваемом

<%= 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' %> 

Это, как я называю это - как я хочу закончить свою TODO по индексу, а не собирается в и обновления на несделанного /: ид/редактирования. Тем не менее, он дает мне ошибку, когда я нажимаю на флажок, так как URL, как это "/ Todos ид = f483e4a8cb1a728f?", Когда оно должно быть просто "/ Todos/f483e4a8cb1a728f"

EDIT:

My Action

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)

Если вы не имеете, что действия, вы должны создать его.

The url_for возвращается /todos?id=f483e4a8cb1a728f, потому что он рассматривает index действия по умолчанию, и в этом направлении не имеет :id параметра внутри пути, помощник положить его в качестве параметра (строки запроса).

+0

У меня уже установлено действие, но добавление в patch '/ todos /: id' дало мне ошибку «Отсутствует: ключ контроллера в определении маршрутов, пожалуйста, проверьте свои маршруты». Я никогда раньше этого не видел, не могли бы вы прояснить? –

+0

Как вы это определили? Я думаю, что простейшим синтаксисом является 'patch 'todos /: id' => 'todos # your_action''. –

+0

О, извините, мой плохой. Единственная проблема теперь в том, что он отображает id дважды '/ todos/e3309e65a5f225ec696807ee1f5be3/todos/e3309e65a5f225ec696807ee1f5be3' или 'todos/19/todos/19', если я делаю id: todo.id как противно просто todo –

Смежные вопросы