将链接放在顶部

时间:2009-05-27 14:11:37

标签: html ruby-on-rails hyperlink

如果链接指向的网址直到页面后面才确定,我该如何在页面顶部放置一个链接。在此示例中,我想将“创建和编辑方案”链接移动到页面顶部,但正如您所看到的,编辑方案取决于首先了解@scenario_id。

<%= will_paginate @scens, :next_label => 'Older', :prev_label => 'Newer' %>
<div class="box">

<% for scenario in @scens %>
    <% @created = scenario.created_at %>
    <% @updated = scenario.updated_at %>
    <% @scenario_id = scenario.id %>
    <% if scenario.scenario_image.exists? %> 
        <%= scenario_image_tag(scenario) %>
    <% end %>
  <%= simple_format(scenario.description) %>
<% end %>
</div>

<% if session[:role_kind] == "controller" %>
    <p>
    <%= button_to "Create new scenario", :action => "create" %>
    <% if @scens.size > 0 %>
        <%= button_to "Edit scenario", :action => "edit", :id => @scenario_id %>
    <% end %>
    </p>

3 个答案:

答案 0 :(得分:1)

您可以在顶部添加链接,但稍后需要以编程方式访问该链接,然后为其分配URL。这需要某种参考或查找功能,我在想客户端的javascript,但那是因为我不知道Ruby。

或者,您可以稍后在拥有URL时创建链接,并使用CSS定位将链接置于顶部。页面上所有DOM元素的实际位置不一定与它们的呈现顺序相匹配。

答案 1 :(得分:0)

执行此操作的一种方法是使用帮助程序:

在你的helper.rb文件中:

def stack_example(scens, &block)
  html = 'Scenario Details'
  edit_link = 'Edit Link'
  yield html, edit_link
end

然后在你的部分你可以有类似的东西:

<% stack_example(@scens) do |html, edit_link| %>
  <%= edit_link %><br>
  <%= html %>
<% end %>

应输出以下内容:

Edit Link
Scenario Details

答案 2 :(得分:0)

我不明白。为什么要在视图层中创建模型?为什么不在控制器中创建模型变量?就像:

class your_controller
  def your_method
    @scenario_id = ...
  end
end

我认为您的问题存在于无效的MVC使用中。难道你不认为在视图开始渲染之前应该初始化所有@member @variables吗?