0

я делал блог и у меня есть проблема, когда я хочу, чтобы показать статьюкак показать содержание статьи из другой точки зрения

Я генерировать контент подмостей названия статьи: текст, и я просто сгенерировать новый контроллер под названием приветствуется с видом под названием homepage. Я создал новый контроллер + просмотр только для показа статей. для этой части я не нашел проблему, а затем создал новый контроллер под названием post с видом под названием show предназначен только для отображения содержимого выбранных статей с домашней страницы .

Как показать содержимое статьи с другого вида? Я просто добавил @article = Article.find(params[:id]) к post_controller , а затем, когда я нажимаю название статьи, в домашней страницы я получил ошибку, как это

Не удалось найти статьи с «ид» =

я скучаю какой-то код?

это мой welcome_controller

class WelcomeController < ApplicationController 
    def homepage 
    @articles = Article.all 
    end 
end 

Добро пожаловать/homepage.html.erb

<div class="post-preview"> 
    <% @articles.each do |article|%> 
    <h2 class="post-title"><%= link_to article.title, welcome_show_path %></h2>      
    <%= truncate article.content, length: 160 %> 
    <hr> 
    <% end %>  
</div> 

пост/show.html.erb

<div class="post-heading"> 
    <h1><%= @article.title %></h1> 
</div> 
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1"> 
    <p><%= @article.content %></p> 
</div> 

post_controller

class PostController < ApplicationController 
    def show 
    @article = Article.find(params[:id]) 
    end 
end 

routes.rb

Rails.application.routes.draw do 
    resources :articles 
    get 'welcome/homepage' 
    get 'post', to: 'post#show' 
    root 'welcome#homepage' 
end 

спасибо :)

ответ

1

Проблема, кажется, в вашей ссылке:
<h2 class="post-title"><%= link_to article.title, welcome_show_path %></h2>

welcome_show_path нужен идентификатор. Попробуйте welcome_show_path(id: article.id).

<h2 class="post-title"><%= link_to article.title, welcome_show_path(id: article.id) %></h2>

Если это не сработает, попробуйте: post_show_path(id: article.id).

+0

это работает.! Я не знаю, что его нужно добавить 'id: article.id' thx в любом случае :) – June

0

У вас есть 3 Контроллеры:

Article => порождена строительных лесов, это означает, с предустановленными маршрутами. Welcome => только один метод, называемый homepage Post => только один способ, называемый show.

Маршруты:

resources :articles  ##generate default routes 
get 'welcome/homepage' ##generate only one route, URL would be -> homepage_welcome_path. 
get 'post', to: 'post#show' ##it will call show method without any parameter. 
root 'welcome#homepage' 

Первого: прибудет 'фотографий /: идентификатор', чтобы: 'фото # шоу'

В вашем homepage.html.erb

<h2 class="post-title"><%= link_to article.title, welcome_show_path %></h2> 

welcome_show_path ## expect show method in welcome controller, which is not exist. 

Второе:

Чтобы вызвать метод показа статей, вы должны передать идентификатор этой статьи.

get 'articles/:id', to: 'articles#show' ##This route is already defined as you have `resource articles`. URL would be articles_path for the same. 

Заменить в homepage.html.erb

<h2 class="post-title"><%= link_to article.title, articles_path(id: article.id) %></h2> 
Смежные вопросы