1

コントローラーに標準newメソッドがあるとします。

def new
  @doc = Doc.new
  respond_to do |format|
    format.html
    format.json { render json: @doc }
  end
end

引数を簡単に渡すにはどうすればよいですか。つまり、次のようになります。

def new(i)
  ...
end

ビューに次のようなものを書くことを許可するには:

<%= link_to(e.name, new_doc_path(e.id)) %>

乾杯!

4

1 に答える 1

7

Railsはそうはいきません。コントローラーに何かを渡したい場合は、paramsハッシュを使用する必要があります。あなたの例では:

意見:

<%= link_to(e.name, new_doc_with_parameter_path(e.id)) %>

コントローラ:

def new
  id = params[:id]
  # do something with `id`
end

idこれを機能させるには、ルートを変更して、URL 経由で新しいアクションに渡すことができるようにする必要があります。

get "/docs/new/:id" => "docs#new", :as => :new_doc_with_parameter

上記は機能するはずですが、あなたの場合はNested Resourcesを確認することをお勧めします。

于 2013-01-07T01:06:05.970 に答える