2011-07-15 22 views
0

添付ファイルをアセットに追加するためのレールアプリケーションがありますので、http://localhost:3000/attachments/:asset_id/newに電話をかけてアセットIDを自動的に取り込むようにしたいと考えています。ビューでこれを設定する方法はわかりませんが、私はそれを一度に行うと思います。だから私はこの仕事をどのように達成することができますか?rails URLからパラメータを取得する

は、私の知る限り、これまで持っている、と私は、これは正しいが、routes.rbをして次の行を追加していると考えているよう:

match 'attachments/:asset_id/new'=>'attachments#new' 

注:これはRailsの3アプリケーションです。

+0

私はまだ回答を投稿できませんので、私はここに答えを投稿しました:http://pessetto.com/question2answer/index.php?qa=30&qa_1=how-do-i-get-the-parameter-from -url-in-rails-3 –

答えて

2

あなたはそれをそうのようなRESTfulな方法で行うことができます:

resources :assets do 
    resources :attachments # this would give you localhost:3000/assets/:asset_id/attachments/new for your #new action 
end 

または非RESTfulな方法:

match 'attachments/:asset_id/new'=>'attachments#new', :as => "new_attachments_asset" 

を私は前者をお勧めしたい;)の場合あなたの添付ファイル#新しい操作は次のようになります:

def new 
    @asset = Asset.find(params[:asset_id]) 
    @attachment = @asset.attachments.build # assuming a has_many/belongs_to association 
end 
+0

実際のシステムに統合された後は、安静なやり方でやっていきます。新しいコマンドが必要であると仮定しています:@attachment = Attachment.new(:asset_id => params [:asset_id])ビューの非表示フィールドにAsset_Idを取得します。 –

+0

これはフォームの構造によって異なります。フォームヘルパーを使った簡単な例では、通常、Attachment.new(params [:attachment])のようなものがあります。自分の属性を自分で設定する必要があります。 Attachment.newに属性値を割り当てたい場合は、アサインメントアサイン(モデル内ではattr_accessible)のためにアトリビュートにアクセスする必要があることに注意してください。 – emrass

+0

ご迷惑をかけて訂正してください。新しいアクションでは、@asset = Asset.find(params [:asset_id])&& @ asset.attachments.build(またはhas_one/belongs_toの関連付けの場合:@ asset.build_attachment) – emrass

関連する問題