Вот моя проблема: я настраиваю интернационализацию на своем сайте (чтобы мы могли иметь несколько переводов текста на страницах). Я следил за приведением рельсов, чтобы настроить страницу, которая может управлять переводами вместо мне приходится вручную редактировать каждый файл yml.
Я все настроил и могу нормально создавать записи, я пытаюсь добавить возможность удалять запись и упираюсь в стену. Я не могу правильно настроить ссылку, чтобы удалить запись из Redis. Первое, что усложнило это (по крайней мере, для меня), это то, что я не удаляю объект, созданный с помощью активной записи (например, пользователя и т. д.). Поэтому вместо использования объекта активной записи для создания URL-адреса для link_to или form_for мне приходится создавать его вручную.
Из того, что я прочитал до сих пор, я должен поместить ссылку в форму (и настроить ее для публикации, поскольку мы модифицируем базу данных Redis). Поэтому я пытался создать правильный синтаксис в форме для тега, чтобы направлять действие, которое я установил в контроллере.
Контроллер:
class InternationalizationTranslationsController < ApplicationController
def index
@translations = I18n.backend.store
end
def create
I18n.backend.store_translations(params[:locale], {params[:key] => params[:value]}, :escape =>false)
redirect_to internationalization_translations_url, :notice => "Added translation"
end
def destroy
puts "Key is: #{params[:key]}"
I18n.backend.delete(params[:key])
redirect_to internationalization_translations_url, :notice => "Removed translation"
end
end
Просмотр:
<%= form_tag internationalization_translations_path do %>
<p>
<%= label_tag :locale %>
<%= text_field_tag :locale %>
</p>
<p>
<%= label_tag :key %>
<%= text_field_tag :key %>
</p>
<p>
<%= label_tag :value %>
<%= text_field_tag :value %>
</p>
<p><%= submit_tag "Submit" %></p>
<% end %>
</div>
<div class="grid_7 top_padding">
<table class="trans_table">
<% @translations.keys.each_with_index do |key, i| %>
<tr class="<%= i%2 == 0 ? "even" : "odd" %>">
<td><%= key %></td>
<td><%= @translations[key] %></td>
Затем я поэкспериментировал с form_for и form_tag, просматривая документацию (помощники форм и документы по тегам формы), в конечном итоге заканчивающиеся этим, которые все еще не работают:
<%= form_tag(controller: "internationalization_translations", action: "destroy", method: "post", key: key) %>
<%= submit "Delete" %>
<% end %>
и сейчас
<%= form_tag(internationalization_translations_path, action: "destroy", method: "post", key: key) do %>
<%= submit_tag "Delete" %>
<% end %>
Я также некоторое время играл с link_to, прежде чем наткнулся на этот post который связан с тем, почему ссылка/кнопка удаления должна быть в форме, потому что она редактирует БД, поэтому ее нужно было опубликовать, а не получить. Я немного расстроен, потому что это кажется довольно простой задачей, но я сталкиваюсь с некоторыми трудностями при поиске четкого ответа относительно моей конкретной проблемы, в частности, маршрутизации для этой ссылки для записи Redis, а не для объекта activerecord.
** также, поскольку форма для кнопки создается в цикле для каждой записи, мне, вероятно, следует иметь форму с индексом, чтобы она была специфичной для каждой кнопки?
Любое понимание или ссылки будут с благодарностью.
Спасибо,
Алан