根据页面参数在Rails中创建if条件

时间:2016-04-07 05:12:35

标签: ruby-on-rails forms

我正在根据表中的属性预先填充Rails表单中的值。

使用普通的脚手架,这对新动作很有用。当我返回编辑时,它会预先填充不正确的值。要解决这个问题,我想在表单中创建一个if / else条件。为了测试,如果我们在编辑路径中,我希望表单放置一个整数值“7”(作为测试):

<% if params[:edit] %> 
  <div class="form-group">
     <div class="field">
      <%= f.label :Game_Number %><br>
      <%= f.number_field :category_id, :value => 7, class: "form-control" %>
    </div>
  </div>
<% else %> 
    <div class="form-group">
     <div class="field">
      <%= f.label :Game_Number %><br>
      <%= f.number_field :category_id, :value => params[:id].to_i, class: "form-control" %>
    </div>
  </div>

<% end %> 

执行此操作时会加载页面,但会继续错误地使用<% else %>操作。

此外,我的脚手架中此编辑页面的URL结构如下:

http://localhost:3000/questions/22/edit

如果条件改变了编辑路线上的行为,我该如何构建?

3 个答案:

答案 0 :(得分:1)

action中有controllerparams。你可以有这样的条件:

<% if params[:action] == 'edit' %>
<% else %>
<% end %> 

答案 1 :(得分:0)

<error-page>
        <error-code>404</error-code>
        <location>/Error404.html</location>
</error-page>

答案 2 :(得分:0)

使用实例变量执行此操作,在控制器中设置控制器中的值,而不是在视图中:

def new
  @object = Object.new(category_id: params[:category_id])
end

def edit
  @object = Object.find(params[:id])
  // puts @object.category_id => 7 or what
end

在您看来,只是:

   <%= form_for @object do |f| %>
     <div class="form-group">
         <div class="field">
          <%= f.label :Game_Number %><br>
          <%= f.number_field :category_id, class: "form-control" %>
        </div>
      </div>
   <% end %>