1

そのため、現在、建物のネットワークを RoR 実装でマッピングしようとしています。適切なフロア プランを設定し、スイッチ オブジェクトも作成しました。最終的に、スイッチには多くのジャックがあり、各ジャックは部屋番号と 1 対 1 でマッピングされます。

現在、スイッチを個別に表示しようとするまで、すべてがフロアとスイッチで完全に機能しています。別のコントローラーで show メソッドを使用してこれを実行しようとしています。元々はフロアコントローラーが担当していましたが、今はスイッチコントローラーを担当してもらいたいです。

これが私の部分的なスイッチコードです (apps/views/switch/_switch.html.erb):

<p>
  <%= switch.title %>

  <%= link_to 'show', :controller => "switches", :action => 'show'  %>

  <%= link_to 'Destroy', [switch.floor, switch],
               :confirm => 'Are you sure?',
               :method => :delete %>
</p>

これが私のshowメソッドです(apps/controllers/switches_controller.rb):

...
  def show
    @floor = Floor.find(params[:floor_id])
    @switch = @floor.switches.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render :json => @switch }
    end
  end
...

部分的にスイッチコントローラーにタグを付けていない場合、リンクをクリックするたびに、同じページに戻るリンクとして機能します...基本的には単なる更新です。スイッチ コントローラーにタグを付けると、「ルートが [GET] "/assets" に一致しません」というエラーが表示されます。

複数の異なる構文を試しましたが、何も機能しませんでした。誰かが私を助けることができれば、私はとても感謝しています!!

私のコードをもっと投稿する必要がある場合はお知らせください。

4

2 に答える 2

1

「rake routes 」コマンドを実行して、使用可能なすべてのルーティング オプションを一覧表示し、個々のリンクにコントローラーとアクションを指定するのではなく、url/path を使用することをお勧めします。

フロアとスイッチのネストされたルートをセットアップしたと仮定して、この URL を取得します。

/floors/:floor_id/switches/:id/show

あなたが使用することができます

<%= link_to "Switch", floor_switch_path(switch.floor, switch) %>

于 2012-06-12T01:17:05.197 に答える
0

'Show' method used to display particular element. Particular switch in your case. So you need to send :id to your controller, like this

link_to "Switch", :controller => "switches", :action => "show", :id => switch
于 2012-06-11T20:50:17.763 に答える