Rails相同的传入路由但不同的控制器操作?

时间:2017-10-16 13:37:27

标签: ruby-on-rails routes

用户点击了像example.com/pizza这样的标签,并在帖子控制器中查看了所有贴有披萨标签的帖子。我希望人们也能看到所有带有披萨标签的“备用邮件”,但是在不同的控制器中。

rails routes会抛出一条错误消息,说明它已在使用中。什么是最好的方法呢?

的routes.rb

  # TAGS
  get 'tags/:tag', to: 'posts#index', as: :tag
  get 'tags/:tag', to: 'alternateposts#index', as: :tag

2 个答案:

答案 0 :(得分:0)

您不能使用相同的网址声明多个路线。 在您的情况下,seconde URL将超载您的第一个。

您必须使用单个控制器声明单个路由,并以相同方式返回<ItemsControl ItemsSource="{Binding MyDataCollection}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal"/> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> <Grid> <Grid.Style> <Style TargetType="Grid"> <Style.Triggers> <EventTrigger RoutedEvent="MouseEnter"> <EventTrigger.Actions> <BeginStoryboard> <Storyboard> <!--<DoubleAnimation Duration="0:0:0.100" Storyboard.Target="(Grid.RowDefinitions[2])" Storyboard.TargetProperty="Height" From="10" To="0" />--> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> </Style.Triggers> </Style> </Grid.Style> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> <RowDefinition Height="10"/> </Grid.RowDefinitions> <Image Source="{Binding CurrentImage}" Grid.Row="0" Stretch="Uniform" /> <TextBlock Grid.Row="1" Text="{Binding Title}" TextAlignment="Center" FontSize="16" /> </Grid> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> posts

答案 1 :(得分:0)

是的@Antoine Dewaele是对的。您没有声明具有相同URL的多个路由。 您的路线文件是这样的

get 'tags/:tag' => 'posts#index', :as => :tag

您的路线文件应该是这样的

get 'tags/:tag' => 'posts#index', :as => :tag
get 'all_pizza' => 'all_pizza#index', :as => :all_pizza

有关详情,请访问Rails Routing from the Outside In