Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 试图传递参数_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 试图传递参数

Ruby on rails 试图传递参数,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我正在尝试将URL参数传递到我的Rails应用程序中(例如:/entries/new?name=asdf) 控制器: def新建 @entry=entry.new(参数[:名称]) 结束 def创建 @entry=entry.new(参数[:名称]) if@entry.save 将_重定向到@entry,注意:“条目已成功创建。” 其他的 渲染:新 结束 结束 private # Use callbacks to share common setup or constraints between

我正在尝试将URL参数传递到我的Rails应用程序中(例如:/entries/new?name=asdf)

控制器:

def新建
@entry=entry.new(参数[:名称])
结束
def创建
@entry=entry.new(参数[:名称])
if@entry.save
将_重定向到@entry,注意:“条目已成功创建。”
其他的
渲染:新
结束
结束

private
# Use callbacks to share common setup or constraints between actions.
def set_entry
  @entry = Entry.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def entry_params
  params.require(:entry).permit(:name)
end end
表单字段:

<%= hidden_field_tag :name, params[:name] %>

我得到的错误是“当分配属性时,必须将散列作为参数传递。”


有什么想法吗?

使用
rails生成scaffold Entry
并查看生成的代码。您试图做的没有多大意义

params
是一个散列。
params[:name]
将返回一个字符串('asdf'在上面的示例中)。当实例化
条目
时,您仅在应传递哈希值的情况下传递字符串。假设
名称
是条目模型上的一个属性,则需要执行此操作

@entry = Entry.new(name: params[:name])

还有一件事,如果我需要传入多个属性,比如idea_id属性,该怎么办params@maclover7这取决于情况。如果您通过GET参数传递数据(例如,
/entries/new?name=asdf&idea_id=7
),则可以从
参数
散列访问这两个参数(例如,
params[:name]
params[:idea\u id]
)@entry=entry.new(name:params[:name])(idea\u id:params[:idea\u id])@maclover7 No。请记住,您需要向
new
方法传递一个散列。因此在您的情况下,它将是
@entry=entry.new(name:params[:name],idea\u id:params[:idea\u id])
。此外,如果您觉得我的答案有帮助,请将其标记为已回答。干杯!