我正在为视障人士创建一部分Rails应用程序。这要求我仅使用文本和链接创建它,以便使使用语音阅读器的人更容易浏览。我想使用现有模型中的字段来动态构建link_to命令。我希望能够使用模型上的几个字段构建变量,该字段包含用户点击的文本以及包含该链接的模型中的另一个字段。
以下是我的控制器中的代码:
MediaLibrary.find(:all, conditions: ["media_type_id < ?", 3], limit: 5).each do |media_item|
@audio_links["link_text"] = "Audio of #{MediaCreator.find(media_item.media_creator_id).name} #{media_item.media_created.to_time.strftime('%A, %B %d, %Y')} at #{media_item.meeting_time}
#{media_item.am_pm} - #{media_item.name}"
@audio_links["link"] = media_item.link
end
以下是我视图中的代码:
<% @audio_links.each do |audio_link| %>
<li>
<%= link_to audio_link["link_text"], '#{audio_link["link"]}' %>
</li>
<% end %>
我也尝试了以下内容:
<% @audio_links.each do |audio_link| %>
<li>
<%= link_to 'audio_link["link_text"]', '#{audio_link["link"]}' %>
</li>
<% end %>
而且:
<% @audio_links.each do |audio_link| %>
<li>
<%= link_to '#{audio_link["link_text"]}', '#{audio_link["link"]}' %>
</li>
<% end %>
我尝试了一些其他版本,但是当我尝试显示屏幕或显示正在显示的文本的链接时,我在link_to命令上得到无法将String转换为Integer 错误如下。发生这种情况时,单击链接时会出现其他错误。
#{audio_link["link_text"]}
我在Stack Overflow和整个网络上做了很多搜索。我没有在任何地方找到这样做的一个例子。我在较旧的帖子中看到过有一个set_path命令(2010),但最近的帖子没有。我用过html_safe!之前并将其添加到我的代码中。我不知道我的代码是否有问题,或者我是否正在尝试一些不可能的事情。我真诚地希望这是可能的,因为它可以让有语言读者的人更容易知道他们点击的内容。
对此有任何帮助将不胜感激。
答案 0 :(得分:0)
您不能在单引号中进行字符串插值。用双引号替换单引号,您的变量将被正确扩展。
例如:
<%= link_to audio_link["link_text"], "#{audio_link['link']}" %>