Размещение ссылки сверху - PullRequest
0 голосов
/ 27 мая 2009

Как разместить ссылку в верхней части моей страницы, если URL-адрес, на который она указывает, не будет определен до тех пор, пока не откроется страница. В этом примере я хочу переместить ссылки «Создание и редактирование сценария» в верхнюю часть страницы, но, как вы можете видеть, «Редактирование сценария» зависит от знания @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 ]

1 голос
/ 27 мая 2009

Вы можете добавить ссылку вверху, но вам потребуется программный доступ к ней позже, а затем назначить ей URL. Для этого нужна какая-то ссылка или возможность поиска, я думаю, что на стороне клиента javascript, но я не знаю Ruby.

В качестве альтернативы вы можете создать ссылку позже, когда у вас есть URL-адрес, и разместить ссылку вверху с помощью позиционирования CSS. Фактическая позиция всех элементов DOM на странице не обязательно должна соответствовать порядку, в котором они отображаются.

0 голосов
/ 03 ноября 2009

Я не понимаю. Почему вы создаете модель в слое вида? Почему бы вам не создать переменные модели в контроллере? Sth, как:

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

Я думаю, что ваша проблема заключается в неправильном использовании MVC. Не думаете ли вы, что все @member @variables должны быть инициализированы до того, как представление начнет отображаться?

0 голосов
/ 28 мая 2009

Один из способов сделать это - использовать помощника:

В вашем файле 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...