Ruby on rails 。每个循环返回[]。表格/控制员问题
我有RoR 4.2.0测试版。(尽管这是一个beginer问题,因此与此无关) 我的表单没有在数据库中插入我通过它创建的“propune”。因此,当我重定向到索引页时,它们不会显示在索引页中。当我通过控制台创建它们时,它们就会显示出来Ruby on rails 。每个循环返回[]。表格/控制员问题,ruby-on-rails,Ruby On Rails,我有RoR 4.2.0测试版。(尽管这是一个beginer问题,因此与此无关) 我的表单没有在数据库中插入我通过它创建的“propune”。因此,当我重定向到索引页时,它们不会显示在索引页中。当我通过控制台创建它们时,它们就会显示出来 class PropuneresController < ApplicationController before_action :prop_params def new @user = User.find(params[:user_id])
class PropuneresController < ApplicationController
before_action :prop_params
def new
@user = User.find(params[:user_id])
@propunere = @user.propuneres.build
end
def create
@user= User.find(params[:user_id])
@propunere = @user.propuneres.new(params[:prop_params])
@propunere.save
if @propunere.empty?
render 'new'
else
redirect_to user_propuneres_path
end
end
def index
@user = User.find(params[:user_id])
@propunere = @user.propuneres(params[:prop_params])
end
private
def prop_params
params.require(:propunere).permit(:titlu, :body)
end
end
class PropuneresController
new.html.erb
<h2> Propunere Nouă </h2>
<%= form_for @propunere do |f| %>
<ul>
<% @propunere.errors.full_messages.each do |error| %>
<li><%= error %></li>
<% end %>
</ul>
<p>
<%= f.label :titlu %><br />
<%= f.text_field :titlu %>
</p>
<p>
<%= f.label :body %><br />
<%= f.text_area :body %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
propune Nouă
index.html.erb
<h2> Propuneri: </h2>
<% @propunere.each do |p| %>
<%= p.titlu %>
<%= p.body %>
<% end %>
Propuneri:
我认为索引操作中不需要参数:
@propunere = @user.propuneres
用复数形式写会更符合逻辑,因为你有很多
编辑: 正如Avdept所建议的,您的创建操作应如下所示:
def create
@user = User.find(params[:user_id])
@propunere = @user.propuneres.new(prop_params)
respond_to do |format|
if @propunere.save
format.html { redirect_to user_propuneres_path(@user), notice: 'Your propunere has been saved' }
else
format.html { render :new }
end
end
end
我认为在索引操作中不需要参数:
@propunere = @user.propuneres
用复数形式写会更符合逻辑,因为你有很多
编辑: 正如Avdept所建议的,您的创建操作应如下所示:
def create
@user = User.find(params[:user_id])
@propunere = @user.propuneres.new(prop_params)
respond_to do |format|
if @propunere.save
format.html { redirect_to user_propuneres_path(@user), notice: 'Your propunere has been saved' }
else
format.html { render :new }
end
end
end
我认为在索引操作中不需要参数:
@propunere = @user.propuneres
用复数形式写会更符合逻辑,因为你有很多
编辑: 正如Avdept所建议的,您的创建操作应如下所示:
def create
@user = User.find(params[:user_id])
@propunere = @user.propuneres.new(prop_params)
respond_to do |format|
if @propunere.save
format.html { redirect_to user_propuneres_path(@user), notice: 'Your propunere has been saved' }
else
format.html { render :new }
end
end
end
我认为在索引操作中不需要参数:
@propunere = @user.propuneres
用复数形式写会更符合逻辑,因为你有很多
编辑: 正如Avdept所建议的,您的创建操作应如下所示:
def create
@user = User.find(params[:user_id])
@propunere = @user.propuneres.new(prop_params)
respond_to do |format|
if @propunere.save
format.html { redirect_to user_propuneres_path(@user), notice: 'Your propunere has been saved' }
else
format.html { render :new }
end
end
end
不确定它是否相关,但您有代码
@propunere.save
if @propunere.empty?
render 'new'
else
redirect_to user_propuneres_path
end
对象@prorunere将永远不会为空,因为您已经
@propune=@user.propune.new
,它将用户id
分配给您的@propune
对象和
render'new'
将永远不会被呈现,因此您不会看到任何验证错误,也永远不会找到未创建记录的原因
另外,因为你有那段代码,并且没有看到错误,这就是你最喜欢的代码
@user.propuneres.new(params[:prop_params])
-您应该使用您允许的参数,因此
@propune=@user.propune.new(prop_参数)
不确定它是否相关,但您有代码
@propunere.save
if @propunere.empty?
render 'new'
else
redirect_to user_propuneres_path
end
对象@prorunere将永远不会为空,因为您已经
@propune=@user.propune.new
,它将用户id
分配给您的@propune
对象和
render'new'
将永远不会被呈现,因此您不会看到任何验证错误,也永远不会找到未创建记录的原因
另外,因为你有那段代码,并且没有看到错误,这就是你最喜欢的代码
@user.propuneres.new(params[:prop_params])
-您应该使用您允许的参数,因此
@propune=@user.propune.new(prop_参数)
不确定它是否相关,但您有代码
@propunere.save
if @propunere.empty?
render 'new'
else
redirect_to user_propuneres_path
end
对象@prorunere将永远不会为空,因为您已经
@propune=@user.propune.new
,它将用户id
分配给您的@propune
对象和
render'new'
将永远不会被呈现,因此您不会看到任何验证错误,也永远不会找到未创建记录的原因
另外,因为你有那段代码,并且没有看到错误,这就是你最喜欢的代码
@user.propuneres.new(params[:prop_params])
-您应该使用您允许的参数,因此
@propune=@user.propune.new(prop_参数)
不确定它是否相关,但您有代码
@propunere.save
if @propunere.empty?
render 'new'
else
redirect_to user_propuneres_path
end
对象@prorunere将永远不会为空,因为您已经
@propune=@user.propune.new
,它将用户id
分配给您的@propune
对象和
render'new'
将永远不会被呈现,因此您不会看到任何验证错误,也永远不会找到未创建记录的原因
另外,因为你有那段代码,并且没有看到错误,这就是你最喜欢的代码
@user.propuneres.new(params[:prop_params])
-您应该使用您允许的参数,因此
@propune=@user.propune.new(prop_参数)
您对propune模型有任何验证吗?也许模型是无效的。你可以用
create方法而不是create
进行测试,因为如果无法保存对象,它将引发异常。另外,请尝试放置@propunere。在保存它之前检查它,并检查对象的内容是否正常,输出将显示在开发日志中。您对propunere模型有任何验证吗?也许模型是无效的。你可以用
create方法而不是create
进行测试,因为如果无法保存对象,它将引发异常。另外,请尝试放置@propunere。在保存它之前检查它,并检查对象的内容是否正常,输出将显示在开发日志中。您对propunere模型有任何验证吗?也许模型是无效的。你可以用
create方法而不是create
进行测试,因为如果无法保存对象,它将引发异常。也可以尝试放置@propune。检查