【问题标题】:Rails 4 - Render controller variableRails 4 - 渲染控制器变量
【发布时间】:2015-05-25 21:17:42
【问题描述】:

我是 Rails 新手,这似乎是一件微不足道的事情,但我不知道如何渲染它。

我有一个接受字符串输入的表单:

<%= form_for @idea do |f| %>
  <div>
    <%= f.label :idea_list %>
    <%= f.text_field :idea_list %>
  </div>
  <%= f.submit %>
<% end %>

还有一个控制器:

class IdeasController < ApplicationController
  def index
  end

  def new
    @idea = Idea.new
  end

  def create
    @idea = Idea.new(idea_params)

    if @idea.save
      render :index
    else
      render 'new'
    end
  end

  private

  def idea_params
    params.require(:idea).permit(:idea_list)
  end
end

然后我想在index.html.erb 中渲染idea_list 参数,但不知道该怎么做。我试过了:

<p><%= @idea %></p>

但我得到#&lt;Idea:0x007f8b16d98638&gt;的输出。

<% @idea do |idea| %>
  <p><%= idea.idea_list %></p>
<% end %>

我已经尝试了很多变体,但不断收到各种错误。

请帮忙。

【问题讨论】:

  • 应该只是@idea.idea_list

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

所以@idea 是一个对象的实例。 idea_list 是一个属性。所以你需要打电话给@idea.idea_list。任何时候你想从控制器中引用一个对象/模型的实例,它都会指向@instance.attribute

在你的情况下,它将是

<p><%= @idea.idea_list %></p>

如果您想从所有列表中显示它们,在您的视图中是

<%@ideas.each do |idea| %>
  <p><% idea.idea_list%></p>
<% end%>

在你的控制器中是

def index 
  @ideas = Idea.all
end

【讨论】:

  • 谢谢,这很容易。我可以发誓我试过了。
  • 很高兴它有帮助。仅供参考,rails guides 非常适合开始使用 Rails 并作为参考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 2015-12-15
  • 1970-01-01
  • 2016-11-16
  • 2016-12-14
  • 1970-01-01
相关资源
最近更新 更多