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