2016-10-18 5 views
2

Можно ли визуализировать представление с параметрами получения? Например, что-то вроде:Можно ли визуализировать представление с помощью «получить параметры»?

оказывают «/ проекты/листы ID = 43?»

Это потому, что мне нужно сделать вид, который использует параметры URL, чтобы работать должным образом.

Я пробовал много способов, но он только создает параметры, которые я могу получить только в контроллере и которые недоступны после.

Это потому, что я хочу иметь представление, которое содержит html-код многих других видов.

Это мой текущий код:

allProjects.html.erb:

<% Project.where(productchief: user.id).order(:title).each do |project| %> 
<%= render "/projects/sheets?id=#{project.id}" #This doesn't work. %> 
<% end %> 

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

+0

Вы передаете частичное с контроллера или с другого вида? Не можете ли вы установить свойство в контроллере как переменную экземпляра? – David

+0

Это не частичное, это представление, которое я хочу отобразить, и я хочу отобразить его из другого представления. У меня есть вид с именем allProjects, в котором я хочу иметь все html представлений, отображающих проекты (/ projects/sheets?id = x - это маршрут для представления, отображающего проект) И нет Я не могу установить свойство в контроллере как переменную экземпляра. Это будет несовместимо с лечением, которое у меня есть в моих взглядах. –

+0

Мне нужно больше кофе ... мог бы поклясться, что ваш вопрос касался использования частичных. Возможно, вам стоит добавить дополнительную информацию из вашего комментария к исходному вопросу, поскольку это весьма актуально. – David

ответ

2

Я не думаю, что это возможно сделать так, как вы пытаетесь это сделать. Вам нужно будет изменить/projects/sheets, чтобы быть частичным, и сделать это вместо этого и пройти через локальные переменные.

Так уточнить /projects/sheets.html.erb становится /projects/_sheets.html.erb и вы бы тогда ссылаться как:

<%= render partial: "/projects/sheets", locals: { :project_id = project.id } %> 

Затем в течение частичного _sheets.html.erb вы можете сделать ссылка на project_id

0

Как правило, вы должны иметь доступ к параметрам в представлении, но если у вас нет особых причин, вы не можете, я предложил изменить маршруты. Может быть, я не хватает какой-то информации от вашего первоначального вопроса, но, скажем, у вас есть маршруты как:

get 'projects/sheets', to: "projects#index", as: :projects 
    get 'projects/sheets/:id', to: "projects#show", as: :project 

Это изменит ваши URLs немного, но все равно останется в PARAMS доступны. Используя маршруты выше, например, и собирается: localhost:3000/projects/sheets/5?something_fun=geeks_are_us даст следующую Params:

{"something_fun"=>"geeks_are_us", "controller"=>"projects", "action"=>"show", "id"=>"5"} 

И если вы ищете, чтобы сделать несколько элементов с помощью частичного, вы можете пройти назначенные переменный (в вашем случае) 'project' для рендеринга представлений, но он является частичным, как вы, кажется, рендеринг из представления уже.

Так что-то вроде:

<% @projects.each do |project| %> 
    <%= render partial: project, locals: {project: project} %> 
<% end %> 

Это будет пытаться оказывать проекты/_project.html.erb и отправки проекта в качестве переменной. Если вам нужны другие переменные в вашем представлении, просто передайте их в хэши locals.

Надеюсь, это поможет.