Как я могу использовать редактирование на месте на трех разных моделях из представления для модели, которой эти три принадлежат? - PullRequest
0 голосов
/ 11 мая 2010

Я хотел бы включить функцию редактирования на месте в представлении, отображающем значения из разных моделей:

Это то, что я использую в настоящее время, и оно НЕ работает, но хотелось бы несколько альтернатив:

У меня есть модель под названием Campaign. В контроллере я делаю следующее, чтобы перечислить по порядку три модели, которые belong_to a Campaign:

<% @campaign_events = campaign_events %>
<% @campaign_events.each do |campaign_event| %>
    <% model_name = campaign_event.class.name.tableize.singularize %>
    <p>
        <%= link_to campaign_event.title,  send("#{model_name}_path", campaign_event) %>
        <span class='model_name'>(<%= model_name.capitalize %>)</span> 
        <%= campaign_event.days %> Days
    </p>
<% end %>

кампания_эвент - это campaign_helper, определенный как:

module CampaignsHelper
  def campaign_events
    return (@campaign.calls + @campaign.emails + @campaign.letters).sort{|a,b| a.days <=> b.days}
  end
end

Я хочу иметь возможность щелкать числовое значение для Дней при просмотре представления / кампании / шоу и редактировать значение для :days (в этом случае отображается как campaign_event.days

1 Ответ

0 голосов
/ 12 мая 2010

Я не совсем уверен в этом, но постараюсь помочь ... Я верю, что что-то вроде следующего может работать для вас:

# calls controller
in_place_edit_for :call, :days

# emails controller
in_place_edit_for :email, :days

# letters controller
in_place_edit_for :letter, :days

# campaign view
<% @campaign_events = campaign_events %>
<% @campaign_events.each do |campaign_event| %>
   <% controller_name = campaign_event.class.name.tableize %>
   <% model_name = controller_name.singularize %>
   <p>
      <%= link_to campaign_event.title, 
         send("#{model_name}_path", campaign_event) %>

      <span class='model_name'>(<%= model_name.capitalize %>)</span> 

      <%= in_place_editor_field model_name, :days, {}, 
         :url => {
            :controller => controller_name, 
            :action => 'set_#{model_name}_title',
            :id => campaign_event.id} %> Days
   </p>
<% end %>

Есть кое-что, что я не знаю точно, как это сделать:

1) in_place_editor_field model_name
Я считаю, что это не сработает, но я не знаю, как передать имя модели.

2) :action => 'set_#{controller_name}_title'
Не уверен в этом тоже. Просто не выглядит правильно.

В любом случае, надеюсь, это поможет вам ... и простите меня, если это совершенно глупо.

...