0

Rails初心者はこちら。

単一のパーシャルを使用して、コントローラーに関係なく、すべてのビューにCRUDボタンを作成したいと思います。これが私がこれまで取り組んできたものです。私のコントローラーには次のものがあります。

information_controller.rb

class InformationController < ApplicationController
  before_filter :set

  def set
    #Set Paths
    @new_path = new_information_path
    @edit_path = edit_information_path
  end

  #Then normal index, show, etc definitions follows

end

例として、インデックスと編集ページを取り上げます。

index.html.haml

-@operation = "index" #To let partial know what page it is in
-render 'form', operation: @operation

edit.html.haml

-@operation = "edit"
- render 'form', operation: @operation

次に、私の部分的な形で私は持っています:

_form.html.haml

.form-inputs
  .container-fluid
    .span8
      .simple_form_for @foo do |f|
        =f.input :title, as: :string
        =render 'controls', f: f, operation: @operation

また、コントローラーに関係なくCRUDボタンを表示するためだけに機能するコントロールフォームには、次のものがあります。

_controls.html.haml

-if(operation=="new")
  link_to "Create", @new_path, class: "btn btn-success"
-else
  -if(operation=="edit")
    =f.submit "Update"
  -else
    .span3
      %table
        %tr
          %td=link_to "Edit", @edit_path(f), class: "btn btn-primary"
          %td=link_to "Delete", f, confirm: "Are you sure", method: :delete, class: "btn btn-danger"        

したがって、これは「編集」、「削除」、「作成」ボタンをロードするインデックスページでうまく機能します。しかし、コントローラーのedit_information_pathを@edit_pathに適切に割り当てる方法がわかりません。これには、編集パラメーター'f'が必要なためです。

割り当て@new_path=new_information_pathは機能しますが、@edit_pathには「f」が必要です。トリックはありますか?

4

1 に答える 1

1

これを試して:

link_to "Edit",{:controller => params[:controller], :action => :edit, :id => f.object.id}, class: "btn btn-primary"

また:

link_to "Edit",{:controller => controller_name, :action => :edit, :id => f.object.id}, class: "btn btn-primary"
于 2013-03-18T17:14:33.313 に答える