0

現在、1 つにまとめたい 3 つのメソッドがあります。

  def send_email(contact,email)

  end

  def make_call(contact, call)
    return link_to "Call", new_contact_call_path(:contact => contact, :call => call, :status => 'called')
  end

  def make_letter(contact, letter)
    return link_to "Letter", new_contact_letter_path(:contact => contact, :letter => letter, :status => 'mailed')
  end

モデルをパラメーターの 1 つとして渡すだけで、正しく path_to を作成できるように、3 つを 1 つにまとめたいと考えています。私は次のようにこれをやろうとしていますが、立ち往生しています:

  def do_event(contact, call_or_email_or_letter)
    model_name = call_or_email_or_letter.class.name.tableize.singularize
   link_to "#{model_name.camelize}", new_contact_#{model_name}_path(contact, call_or_email_or_letter)" 
  end

ここでの回答のおかげで、私は次のことを試しました。

link_to( "#{model_name.camelize}", send("new_contact_#{model_name}_path", 
                                        :contact => contact, 
                                        :status => "done",
                                        :model_name => model_name) )

しかし、:attribute の場合に #{model_name} を貼り付けてから、model_name の値を文字列としてではなく、オブジェクトを参照して送信する方法がわかりません。

私はこれを機能させました: -彼が私を正しい方向に導いたので、カダダにポイントを与えました:)

  def do_event(contact, call_or_email_or_letter) 
    model_name = call_or_email_or_letter.class.name.tableize.singularize 
    link_to( "#{model_name.camelize}", send("new_contact_#{model_name}_path", 
                                            :contact => contact, 
                                            :status => 'done',
                                            :"#{model_name}" => call_or_email_or_letter ) )                                       
  end 
4

1 に答える 1

2

これを試して:

def do_event(contact, call_or_email_or_letter)
  model_name = call_or_email_or_letter.class.name.tableize.singularize
  link_to( "#{model_name.camelize}", send("new_contact_#{model_name}_path", 
                 contact, call_or_email_or_letter) )
end
于 2010-05-08T04:47:44.947 に答える