是否可以使用变量来构建link_to命令? (Rails 3.2.11)

时间:2013-01-23 21:19:09

标签: ruby-on-rails ruby-on-rails-3

我正在为视障人士创建一部分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!之前并将其添加到我的代码中。我不知道我的代码是否有问题,或者我是否正在尝试一些不可能的事情。我真诚地希望这是可能的,因为它可以让有语言读者的人更容易知道他们点击的内容。

对此有任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您不能在单引号中进行字符串插值。用双引号替换单引号,您的变量将被正确扩展。

例如:

<%= link_to audio_link["link_text"], "#{audio_link['link']}"  %>