0

フォームを作成しましたが、フォームを送信したユーザーではなく、自分でテキストを追加する例の説明が必要です。しかし、コントローラーでパラメーターを渡す方法がわかりません。

私のフォームビュー

<%= form_for @issue, :url => contact_path do |form| %>
 <%= form.label :description %>
      <%= form.text_area :description  %>

私のコントローラー:

def create
 @issue = Issue.create(params[:issue])
 @issue.description = "The user write" + params[:issue][:description]

   if @issue.save
    flash[:succes] = "good"
    redirect_to root_path
  else
    flash[:avertissement] = "try again"
    redirect_to contact_path
       end
  end

しかし、フォームを送信すると、ユーザーによるテキスト書き込みが表示されますが、ユーザーテキストの前に「ユーザー書き込み」は表示されません。そして、ユーザーがフォームを送信したときに、「ユーザーの書き込み:ユーザーによるテキストの書き込み」が表示されるようにしたい

ご協力いただきありがとうございます。

4

2 に答える 2

1

次のエラーが表示されないことに驚いています。

TypeError in IssuesController#create
can't convert nil into String

これは、この行で正しい params ハッシュ キーを使用していないように見えるためです。

@issue.description = "The user write" + params[:description]

代わりに、次のようにする必要があります。

@issue.description = "The user write " + params[:issue][:description]

この変更を行うだけで、コードは意図したとおりに動作するはずです。

また、Issue.create の代わりに Issue.new を使用してみてください。このような。

def create
  @issue = Issue.new(params[:issue])
  @issue.description = "The user write" + params[:issue][:description]

  if @issue.save
    flash[:succes] = "good"
    redirect_to root_path
  else
    flash[:avertissement] = "try again"
    redirect_to contact_path
  end
end

.create を使用すると、新しい問題が作成され、検証され、データベースに保存されます。.new を使用すると、単に新しい問題が作成されますが、.save を呼び出すまでデータベースに保存されません。現在 .create を使用している方法では、説明を変更する前に問題がデータベースに保存されています。その後、再度保存しようとすると、何らかの理由で保存できません。

于 2013-06-07T14:31:44.473 に答える