我正在尝试使用Rails 3获得Gitorious并运行,但我遇到了一个问题。
我在视图中有这一行。
<p><%= t("views.commits.message").call(self, tree_path(@commit.id)) %></p>
相应的区域设置行看起来像这个[config/locales/en.rb
]
:message => lambda { |this, path| "This is the initial commit in this repository, " +
this.link_to( "browse the initial tree state", path ) + "." }
这里的问题是lambda方法没有在视图中使用#call
调用,而是由其他人调用,这意味着this
不是self
那个正在传递给它。
this
包含views.commits.message
,path
包含{:rescue_format=>:html}
。
Gitorious团队在整个应用程序中都使用了这种方法,这意味着我不能将逻辑转换为辅助方法,而无需花费一天时间进行表单工作。
我做了一些研究,并找到了关于确切行的this帖子。
这是解决问题的方法。
这似乎表明你的系统上安装了i18n gem;这个宝石与Gitorious不相容。使用Rubygems卸载它可以解决问题。
我尝试卸载i18n
,但正在运行bundle install
只是再次安装它。
如果不重构700行语言环境文件,我该如何解决这个问题?
答案 0 :(得分:1)
这是一个常见的问题,如何分解复杂的嵌套文本。
使用markdown来简化它
This is the initial commit in this repository
[browse the initial tree state](http://example.com/some/path)
.
也许用中文你会说
这是第一个提交在这个知识库
[看初始状态](http://example.com/some/path)
。
我们必须考虑三件事;
如果链接相对于文本的位置不需要更改,则@WattsInABox更正。
views.commits.message: "This is the initial commit in this repository"
views.commits.browse: "browse the initial tree state"
然后我们只是撰写
<p>
<%= t "views.commits.message" %>
<%= link_to t("views.commits.browse"), tree_path(@commit.id) %>
.
</p>
但有时秩序和位置确实重要, 在这种情况下,我们可以尝试更聪明。
views.commits.message: "This is the initial commit in this repository %{link}"
views.commits.browse: "browse the initial tree state"
然后我们可以在正确的位置插入链接
<p>
<%= t "views.commits.message", link: link_to(t("views.commits.browse"), tree_path(@commit.id)) %>
</p>