【问题标题】:render with params when setting a value设置值时使用参数渲染
【发布时间】:2015-04-05 08:08:17
【问题描述】:

我有一个看起来像这样的链接:

= link_to 'Issue?', "issues/new?desc=#{comment.body}"

在问题表单中,我选择 desc 参数来设置问题描述:

= form_for(@issue, :url => {:action => 'create',
   :controller => 'issues'}, :method => "post") do |f|
= f.text_field :title,
= f.text_area :description, value: params[:desc]

当我的问题验证失败时,问题就来了。以下行由问题控制器触发:

format.html { render action: 'new' }

这会呈现用户输入的标题,但不会呈现问题描述,因为我使用params[:desc] 设置它的值。当render :new 被触发时,params[:desc] 为零。如何在渲染期间在控制器中设置params[:desc]

路线:

get 'issues/new' => 'issues#new'
post 'issues/create' => 'issues#create'

【问题讨论】:

  • 你试过我的解决方案了吗?

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


【解决方案1】:

desc 更改为description

= link_to 'Issue?', "issues/new?description=#{comment.body}"

然后以你的形式:

= f.text_area :description, value: params[:description]

或者你可以使用:

redirect_to new_issue_path(description: params[:description])

【讨论】:

  • 我试过locals: {desc: "sdfsadf"}。它没有用。我在我的问题中添加了更多信息。当验证失败时,我的路线从 issue/new 更改为 issue/create。我不确定它是否应该是那样的。
  • 按原样尝试locals: {params: params}。不要改变它。
  • 我做到了。标题被渲染,但 desc 变为空。我在控制器中尝试了puts #{params},它有{"utf8"=>"✓", "authenticity_token"=>"CQ/xWz68kBy1WWMt2fnmaTKcFP0rqvWQt1KGKY8V8u8=", "issue"=>{"title"=>"sdfsdf", "description"=>"sdfsdsdfsd", "tag_list"=>"", "type"=>"0"}, "commit"=>"Report Issue", "controller"=>"issues", "action"=>"create", "user_id"=>"addie", "id"=>"fancy_project"}
  • 好的,我明白了你的问题,因为你没有将desc列入白名单,params[:desc] 变为空。
  • 好吧,我也意识到了这一点,我将所有内容都更改为 description。即description=#{comment.body}value: params[:description],但没有效果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-22
  • 1970-01-01
相关资源
最近更新 更多