这是我的问题: 我在我的网站上设置国际化(所以我们可以在页面上多次翻译文本)。我按照rails cast设置了一个可以管理翻译的页面,而不是手动编辑每个yml文件。Rails为redis条目创建删除链接
我已经设置了一切,并可以创建条目罚款,我想添加删除条目的能力,我打了一堵墙。我似乎无法正确设置链接从redis删除条目。首先,这使得这种复杂(至少对我而言)是我不删除通过活动记录创建的对象(如用户等)。所以,而不是使用活动记录对象来构建link_to或form_for的url,我不得不手动构造它。
从我读到目前为止,我必须把链接放在一个表单(并设置为后,因为我们正在修改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 helpers和form tag docs)最终与这些结束,仍然做不工作:
<%= 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其链接到为什么删除链接/按钮应该是这样的形式,因为它是编辑DB所以它需要来临前而不是得到。我有点沮丧,因为这看起来像是一个非常简单的任务,但我遇到了一些困难,找到了有关我的特定问题的明确答案,特别是该链接的路由,用于redis条目而不是activerecord对象。
**也因为按钮的形式正在为每个条目的循环创建我应该可能有一个索引的形式命名,所以它是每个按钮特定的?
任何洞察力或链接将不胜感激。
感谢,
艾伦
当u对删除每个条目的redis-key,为什么不为其创建新的路由+控制器操作?现在你可以使用正确的redis.key将帖子发送到新的动作 - 在这种方法中,你删除了密钥? delete_translation_path(key:your_key) – marvwhere
这就是** Controller **代码是什么,这是我的控制器InternationalizationTranslationsController中的操作,应该是删除我想通过form_for按钮传递的密钥。 在我的路线中,我有资源:internationalization_translations正在为其他窗体工作,这是创建操作。出于某种原因,我无法弄清楚如何让它使用destroy操作并将密钥作为参数[:key]发送(如上所示,从我尝试设置form_for链接的不同方式) –
删除“key-选项“,然后在按钮之前/之后添加一个”hidden_field_tag:key,key“,然后重试。 – marvwhere