为什么我将params值作为simple_form输入的哈希?

时间:2015-09-17 12:55:03

标签: ruby-on-rails simple-form

我的simple_form代码

<%= simple_form_for @post do |f| %>
  <%= f.input :post,:as => :text %>
  <%= f.button :submit %>
<% end %>

其中postPost.new:postPost的列。

由于我的创建方法未按预期保存值,因此我只在:post中打印了create.html.erb参数的值,输出为{"post"=>"My sample post"}

create.html.erb

@post = params[:post]

params[:post]为什么要{"post"=>"My sample post"}代替My sample post

2 个答案:

答案 0 :(得分:3)

你期待输出错误。输出是正确的。

因为在rails params结构如下所示:

params[:model_name][:attribute_name]

因此,如果您要打印预期结果,请尝试使用params[:post][:post]代替params[:post]

答案 1 :(得分:1)

你有一个名为post的对象,你将它传递给simple_form_for,所以它将该表单的内容包装在一个名为post的哈希中。这允许rails区分属于该形式内容的属性和不属于该形式的属性。

例如,如果添加了描述字段,with open(bamlist, 'r') as bamlist: for bam in bamlist: #Opens the 2 files 'Generate data Here' dataframe = [] for line in data: line = line.split("\t") dataframe.append(line[0:4:1]) df = pd.DataFrame(dataframe, columns=['Chromosome', 'Position', 'N', 'BaseCount']) grouped_df = df.groupby('Chromosome') #groups dataframe into the required 25plots for df in grouped_df: density_data = 'Get density data from df' f, ax = plt.subplots() sns.kdeplot(density_data, ax=ax, linewidth=1) pp.savefig() pp.close() 将如下所示。

params[:post]

我认为这可能有点令人困惑,因为你已经调用了模型和属性'post'。也许如果您将列重命名为“内容”,这将更加清晰。