0

さまざまなモデルの値を表示するビューで、その場で編集機能を有効にしたいと考えています。

これは私が現在使用しているものであり、機能しませんが、いくつかの代替手段が必要です:

Campaign というモデルがあります。belong_toコントローラーでは、次のようにして、Campaignの 3 つのモデルを順番にリストします。

<% @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_event は次のように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

4

1 に答える 1

0

私はそれについてよくわかりませんが、私は助けようとします.次のようなものがあなたのために働くかもしれません:

# 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
これはうまくいかないと思いますが、model_name を渡す方法がわかりません。

2):action => 'set_#{controller_name}_title'
それについてもわかりません。正しく見えません。

とにかく、お役に立てば幸いです...これが完全にばかげている場合はご容赦ください。

于 2010-05-12T01:10:35.243 に答える